# HG changeset patch # User ymh # Date 1274748225 -7200 # Node ID cc9b7e14412b82d5517421026ac623859fb0d289 # Parent b758351d191fb39815caaa7ade9ec2a489c80813 update django and lucene diff -r b758351d191f -r cc9b7e14412b .hgignore --- a/.hgignore Wed May 19 17:43:59 2010 +0200 +++ b/.hgignore Tue May 25 02:43:45 2010 +0200 @@ -9,3 +9,10 @@ ^web/index ^web/static/media/ldt ^web/static/photologue + +syntax: regexp +^web/static/media/videos$ +syntax: regexp +^sbin/blinkster$ +syntax: regexp +^web/static/media/photologue$ \ No newline at end of file diff -r b758351d191f -r cc9b7e14412b .pydevproject --- a/.pydevproject Wed May 19 17:43:59 2010 +0200 +++ b/.pydevproject Tue May 25 02:43:45 2010 +0200 @@ -1,14 +1,14 @@ - + python 2.6 -Default +python_blinkster /blinkster/web/blinkster /blinkster/web/lib -/Library/Python/2.5/site-packages +/Users/ymh/dev/workspace/blinkster/sbin/blinkster/lib/python2.6/site-packages diff -r b758351d191f -r cc9b7e14412b sql/update_db_0_10_to_0_11.sql --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sql/update_db_0_10_to_0_11.sql Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,1 @@ +ALTER TABLE ldt_content ADD COLUMN duration integer; \ No newline at end of file diff -r b758351d191f -r cc9b7e14412b web/blinkster/handler.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/blinkster/handler.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5 @@ + +activate_this = '/Users/ymh/dev/workspace/blinkster/sbin/blinkster/bin/activate_this.py' +execfile(activate_this, dict(__file__=activate_this)) + +from django.core.handlers.modpython import handler diff -r b758351d191f -r cc9b7e14412b web/blinkster/ldt/__init__.py --- a/web/blinkster/ldt/__init__.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/ldt/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -4,11 +4,11 @@ lucene.initVM(lucene.CLASSPATH) -STORE = lucene.FSDirectory.getDirectory(settings.INDEX_PATH, False) -ANALYZER = lucene.PerFieldAnalyzerWrapper(lucene.StandardAnalyzer()) -ANALYZER.addAnalyzer("tags",lucene.FrenchAnalyzer()) -ANALYZER.addAnalyzer("title",lucene.FrenchAnalyzer()) -ANALYZER.addAnalyzer("abstract",lucene.FrenchAnalyzer()) -ANALYZER.addAnalyzer("all",lucene.FrenchAnalyzer()) +STORE = lucene.SimpleFSDirectory(lucene.File(settings.INDEX_PATH)) +ANALYZER = lucene.PerFieldAnalyzerWrapper(lucene.StandardAnalyzer(lucene.Version.LUCENE_CURRENT)) +ANALYZER.addAnalyzer("tags",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)) +ANALYZER.addAnalyzer("title",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)) +ANALYZER.addAnalyzer("abstract",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)) +ANALYZER.addAnalyzer("all",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)) diff -r b758351d191f -r cc9b7e14412b web/blinkster/ldt/contentindexer.py --- a/web/blinkster/ldt/contentindexer.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/ldt/contentindexer.py Tue May 25 02:43:45 2010 +0200 @@ -1,20 +1,12 @@ -import tempfile -import os -import os.path -import shutil +import Ft from blinkster.utils import zipfileext import blinkster.utils.log import blinkster.utils.xml from blinkster import settings from blinkster.ldt.models import Content, Segment -import xml -import xml.dom import xml.dom.minidom import xml.dom.ext import xml.xpath -import fnmatch -import uuid -import shutil import lucene from blinkster.ldt import STORE from blinkster.ldt import ANALYZER @@ -56,30 +48,32 @@ blinkster.utils.log.debug("Indexing content : "+str(content.iri_id)) filepath = content.iri_file_path() doc = xml.dom.minidom.parse(filepath) - + doc = Ft.Xml.Domlette.ConvertDocument(doc) + self.__writer.deleteDocuments(lucene.Term("iri_id", content.iri_id)) con = xml.xpath.Context.Context(doc, 1, 1, None) + res = xml.xpath.Evaluate("/iri/body/ensembles/ensemble", context=con) for ensemble in res: - ensembleId = ensemble.getAttribute("id") + ensembleId = ensemble.getAttributeNS(None,"id") for decoupageNode in ensemble.childNodes: blinkster.utils.log.debug("Indexing content decoupage : "+ repr(decoupageNode.nodeType) + " in " + repr(self.decoupage_blacklist)) - if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttribute("id") in self.decoupage_blacklist: + if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttributeNS(None,"id") in self.decoupage_blacklist: continue - decoupId = decoupageNode.getAttribute("id") + decoupId = decoupageNode.getAttributeNS(None,"id") res = xml.xpath.Evaluate("elements/element", decoupageNode) for elementNode in res: doc = lucene.Document() - elementId = elementNode.getAttribute("id") - tags = elementNode.getAttribute("tags") - author = elementNode.getAttribute("author") - start_ts = int(elementNode.getAttribute("begin")) - duration = int(elementNode.getAttribute("dur")) - date_str = elementNode.getAttribute("date") + elementId = elementNode.getAttributeNS(None,"id") + tags = elementNode.getAttributeNS(None,"tags") + author = elementNode.getAttributeNS(None,"author") + start_ts = int(elementNode.getAttributeNS(None,"begin")) + duration = int(elementNode.getAttributeNS(None,"dur")) + date_str = elementNode.getAttributeNS(None,"date") if tags is not None: tags.replace(",", ";") @@ -104,14 +98,14 @@ for txtRes in xml.xpath.Evaluate("abstract/text()", elementNode): abstract = abstract + txtRes.data - doc.add(lucene.Field("iri_id", content.iri_id, lucene.Field.Store.YES, lucene.Field.Index.UN_TOKENIZED)) + doc.add(lucene.Field("iri_id", content.iri_id, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED)) doc.add(lucene.Field("ensemble_id", ensembleId, lucene.Field.Store.YES, lucene.Field.Index.NO)) doc.add(lucene.Field("decoupage_id", decoupId, lucene.Field.Store.YES, lucene.Field.Index.NO)) doc.add(lucene.Field("element_id", elementId, lucene.Field.Store.YES, lucene.Field.Index.NO)) - doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) - doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) - doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) - doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) + doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) + doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) + doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) + doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) seg = Segment(content = content, iri_id = content.iri_id, @@ -129,7 +123,7 @@ self.__writer.addDocument(doc) - self.__writer.flush() + self.__writer.commit() class ProjectIndexer(object): @@ -164,6 +158,7 @@ blinkster.utils.log.debug("Indexing project : "+str(project.iri_id)) doc = xml.dom.minidom.parseString(project.ldt) + doc = Ft.Xml.Domlette.ConvertDocument(doc) self.__writer.deleteDocuments(lucene.Term("iri_id", project.iri_id)) @@ -171,25 +166,25 @@ res = xml.xpath.Evaluate("/iri/annotations/content", context=con) for content in res: - contentId = content.getAttribute("id") + contentId = content.getAttributeNS(None,"id") ensembleId = "ens_perso" for decoupageNode in content.childNodes: blinkster.utils.log.debug("Indexing content decoupage : "+ repr(decoupageNode.nodeType) + " in " + repr(self.decoupage_blacklist)) - if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttribute("id") in self.decoupage_blacklist: + if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttributeNS(None,"id") in self.decoupage_blacklist: continue - decoupId = decoupageNode.getAttribute("id") + decoupId = decoupageNode.getAttributeNS(None,"id") res = xml.xpath.Evaluate("elements/element", decoupageNode) for elementNode in res: doc = lucene.Document() - elementId = elementNode.getAttribute("id") - tags = elementNode.getAttribute("tags") - author = elementNode.getAttribute("author") - start_ts = int(elementNode.getAttribute("begin")) - duration = int(elementNode.getAttribute("dur")) - date_str = elementNode.getAttribute("date") + elementId = elementNode.getAttributeNS(None,"id") + tags = elementNode.getAttributeNS(None,"tags") + author = elementNode.getAttributeNS(None,"author") + start_ts = int(elementNode.getAttributeNS(None,"begin")) + duration = int(elementNode.getAttributeNS(None,"dur")) + date_str = elementNode.getAttributeNS(None,"date") if tags is not None: tags.replace(",", ";") @@ -215,15 +210,15 @@ abstract = abstract + txtRes.data - doc.add(lucene.Field("project_id", project.iri_id, lucene.Field.Store.YES, lucene.Field.Index.UN_TOKENIZED)) - doc.add(lucene.Field("iri_id", contentId, lucene.Field.Store.YES, lucene.Field.Index.UN_TOKENIZED)) + doc.add(lucene.Field("project_id", project.iri_id, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED)) + doc.add(lucene.Field("iri_id", contentId, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED)) doc.add(lucene.Field("ensemble_id", ensembleId, lucene.Field.Store.YES, lucene.Field.Index.NO)) doc.add(lucene.Field("decoupage_id", decoupId, lucene.Field.Store.YES, lucene.Field.Index.NO)) doc.add(lucene.Field("element_id", elementId, lucene.Field.Store.YES, lucene.Field.Index.NO)) - doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) - doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) - doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) - doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.TOKENIZED)) + doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) + doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) + doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) + doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.ANALYZED)) try: content = Content.objects.get(iri_id = contentId) diff -r b758351d191f -r cc9b7e14412b web/blinkster/ldt/fileimport.py --- a/web/blinkster/ldt/fileimport.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/ldt/fileimport.py Tue May 25 02:43:45 2010 +0200 @@ -1,5 +1,4 @@ import tempfile -import os import os.path import shutil from blinkster.utils import zipfileext @@ -7,14 +6,11 @@ import blinkster.utils.xml from blinkster import settings from blinkster.ldt.models import Content, LdtProject -import xml -import xml.dom +import Ft import xml.dom.minidom import xml.dom.ext import xml.xpath import fnmatch -import uuid -import shutil import lucene import uuid from blinkster.ldt import STORE @@ -37,6 +33,7 @@ self.videourl = "" self.title = None self.desc = None + self.duration = None self.decoupageId = None self.ensembleId = None self.created = False @@ -51,6 +48,7 @@ path = os.path.join(self.basepath, self.src) doc = xml.dom.minidom.parse(path) + doc = Ft.Xml.Domlette.ConvertDocument(doc) con = xml.xpath.Context.Context(doc, 1, 1, None) @@ -63,12 +61,12 @@ if self.annotations is not None: newensemble = doc.createElement('ensemble') self.ensembleId = self.id+"_"+str(uuid.uuid1()) - newensemble.setAttribute('id',self.ensembleId) + newensemble.setAttributeNS(None,'id',self.ensembleId) - newensemble.setAttribute('title', self.annotations.getAttribute('title')) - newensemble.setAttribute('author', self.annotations.getAttribute('author')) - newensemble.setAttribute('date', self.annotations.getAttribute('date')) - newensemble.setAttribute('abstract', self.annotations.getAttribute('abstract')) + newensemble.setAttributeNS(None,'title', self.annotations.getAttributeNS(None,'title')) + newensemble.setAttributeNS(None,'author', self.annotations.getAttribute('author')) + newensemble.setAttributeNS(None,'date', self.annotations.getAttribute('date')) + newensemble.setAttributeNS(None,'abstract', self.annotations.getAttribute('abstract')) decoupageNode = None for node in self.annotations.childNodes: @@ -85,24 +83,24 @@ # find an ensemble child node ensemble = None for node in ensemblesnode.childNodes: - if node.nodeType == xml.dom.Node.ELEMENT_NODE and node.tagName == "ensemble": - ensemble = node - break + if node.nodeType == xml.dom.Node.ELEMENT_NODE and node.tagName == "ensemble": + ensemble = node + break if ensemble is not None: - self.ensembleId = ensemble.getAttribute(u"id") + self.ensembleId = ensemble.getAttributeNS(None,u"id") decoupageNode = None for node in ensemble.childNodes: if node.nodeType == xml.dom.Node.ELEMENT_NODE and node.tagName == "decoupage": decoupageNode = node break if not decoupageNode is None: - self.decoupageId = decoupageNode.getAttribute(u"id") + self.decoupageId = decoupageNode.getAttributeNS(None,u"id") res = xml.xpath.Evaluate("/iri/body/medias/media[@id='video']/video", context=con) - src_video = res[0].getAttribute('src') + src_video = res[0].getAttributeNS(None,'src') self.videourl = os.path.basename(src_video) - srcnode = res[0].setAttribute('src', self.videourl) + self.duration = res[0].getAttributeNS(None, 'dur') f = open(path, "w") try: @@ -125,6 +123,7 @@ content.iri = self.id + u"/" + os.path.basename(self.src) content.title = self.title content.description = self.desc + content.duration = int(self.duration) #content.decoupage_id = unicode(self.decoupageId) #content.ensemble_id = unicode(self.ensembleId) content.save() @@ -145,7 +144,7 @@ self.__filepath = filepath self.__tempdir = "" self.__author = author - self.__writer = lucene.IndexModifier(STORE, ANALYZER, True) + self.__writer = lucene.IndexWriter(STORE, ANALYZER, True, lucene.IndexWriter.MaxFieldLength.UNLIMITED) self.__writer.setMaxFieldLength(1048576) @@ -182,8 +181,7 @@ author = property(**author()) - def writer(): - + def writer(): def fget(self): return self.__writer @@ -229,19 +227,20 @@ # create or update content contents = {} doc = xml.dom.minidom.parse(ldtpath) + doc = Ft.Xml.Domlette.ConvertDocument(doc) con = xml.xpath.Context.Context(doc, 1, 1, None) result = xml.xpath.Evaluate("/iri/project", context=con) for pnode in result: - author = pnode.getAttribute("user") - if author: - self.author = unicode(author) - break + #author = pnode.attributes["user"].value + if pnode.hasAttributeNS(None,"user"): + self.author = unicode(pnode.getAttributeNS(None, "user")) + break result = xml.xpath.Evaluate("/iri/medias/media", context=con) for i, medianode in enumerate(result): - id = medianode.attributes['id'].value + id = medianode.getAttributeNS(None,'id') blinkster.utils.log.debug("FIRST ID : " + str(id)) if self.checkExistingMedia: try: @@ -255,17 +254,17 @@ if not (contents.has_key(id)): blinkster.utils.log.debug("CREATE IRI INFO ID : " + str(id)) contents[id] = IriInfo(id, os.path.dirname(ldtpath), i, "") - contents[id].src = medianode.attributes['src'].value + contents[id].src = medianode.getAttributeNS(None,'src') result = xml.xpath.Evaluate("/iri/annotations/content", context=con) blinkster.utils.log.debug("content xpath result : " + str(len(result))) for contentnode in result: - id = contentnode.attributes['id'].value + id = contentnode.getAttributeNS(None,'id') blinkster.utils.log.debug("ID : " + str(id)) if contents.has_key(id): if self.author: - contentnode.setAttribute("author", unicode(self.author)) + contentnode.setAttributeNS(None,"author", unicode(self.author)) contents[id].annotations = contentnode #go throught values @@ -334,14 +333,14 @@ con = xml.xpath.Context.Context(doc, 1, 1, None) result = xml.xpath.Evaluate("/iri/project", context=con) for pnode in result: - author = pnode.setAttribute("user", unicode(self.author)) - break + pnode.setAttribute("user", unicode(self.author)) + break result = xml.xpath.Evaluate("/iri/medias/media", context=con) for i, medianode in enumerate(result): id = medianode.attributes['id'].value - blinkster.utils.log.debug("FIRST ID : " + str(id)) + blinkster.utils.log.debug("FIRST ID at " + str(i) + " : " + str(id)) content = Content.objects.get(iri_id = id) self.contents.append(content) diff -r b758351d191f -r cc9b7e14412b web/blinkster/ldt/models.py --- a/web/blinkster/ldt/models.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/ldt/models.py Tue May 25 02:43:45 2010 +0200 @@ -1,4 +1,6 @@ import os +import xml +import Ft.Xml from django.db import models from django.contrib import admin @@ -30,6 +32,17 @@ description = models.TextField(null=True) external_id = models.CharField(max_length=1024, null=True, blank=True) authors = models.ManyToManyField(Author) + duration = models.IntegerField(null=True, blank=True) + + def get_duration(self): + if self.duration is None: + doc = xml.dom.minidom.parse(self.iri_file_path()) + doc = Ft.Xml.Domlette.ConvertDocument(doc) + con = xml.xpath.Context.Context(doc, 1, 1, None) + res = xml.xpath.Evaluate("/iri/body/medias/media[@id='video']/video", context=con) + self.duration = int(res[0].getAttributeNS(None, 'dur')) + self.save() + return self.duration def delete(self): super(Content, self).delete() diff -r b758351d191f -r cc9b7e14412b web/blinkster/ldt/utils.py --- a/web/blinkster/ldt/utils.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/ldt/utils.py Tue May 25 02:43:45 2010 +0200 @@ -9,30 +9,29 @@ import xml.dom.minidom import xml.dom.ext import xml.xpath -import os -import os.path - +import sys class LdtSearch(object): - def query(self, field, query): - res = [] - indexSearcher = lucene.IndexSearcher(STORE) - #queryParser = lucene.MultiFieldQueryParser(["tags","title","abstract"], ANALYZER) - queryParser = lucene.QueryParser(field, lucene.FrenchAnalyzer()) - queryParser.setDefaultOperator(lucene.QueryParser.Operator.AND) - queryObj = queryParser.parse(query) - hits = indexSearcher.search(queryObj) - for hit in hits: - doc = lucene.Hit.cast_(hit).getDocument() - res.append({"iri_id":doc.get("iri_id"),"ensemble_id":doc.get("ensemble_id"),"decoupage_id":doc.get("decoupage_id"), "element_id":doc.get("element_id")}) - return res + def query(self, field, query): + res = [] + indexSearcher = lucene.IndexSearcher(STORE) + #queryParser = lucene.MultiFieldQueryParser(["tags","title","abstract"], ANALYZER) + queryParser = lucene.QueryParser(lucene.Version.LUCENE_30, field, lucene.FrenchAnalyzer(lucene.Version.LUCENE_30)) + queryParser.setDefaultOperator(lucene.QueryParser.Operator.AND) + queryObj = queryParser.parse(query) + hits = indexSearcher.search(queryObj,50) + for hit in hits.scoreDocs: + doc = indexSearcher.doc(hit.doc) + res.append({"iri_id":doc.get("iri_id"),"ensemble_id":doc.get("ensemble_id"),"decoupage_id":doc.get("decoupage_id"), "element_id":doc.get("element_id")}) + indexSearcher.close() + return res - - def queryAll(self, query): - return self.query("all", query) - + + def queryAll(self, query): + return self.query("all", query) + class LdtUtils(object): def generateLdt(self, contentList, file, title = u"", author=u"IRI Web", web_url=u"", media_url=""): @@ -65,8 +64,6 @@ def generateInit(self, url, method, search=None): - import xml.dom - import xml.dom.ext impl = xml.dom.getDOMImplementation() doc = impl.createDocument(xml.dom.EMPTY_NAMESPACE, 'iri', None) diff -r b758351d191f -r cc9b7e14412b web/blinkster/ldt/views.py --- a/web/blinkster/ldt/views.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/ldt/views.py Tue May 25 02:43:45 2010 +0200 @@ -260,7 +260,7 @@ form = reindexForm(request.POST) if form.is_valid(): try: - writer = lucene.IndexWriter(STORE, ANALYZER, True) + writer = lucene.IndexWriter(STORE, ANALYZER, True, lucene.IndexWriter.MaxFieldLength.UNLIMITED) writer.setMaxFieldLength(1048576) contentList = form.cleaned_data["contents"] indexer = ContentIndexer(contentList,writer) diff -r b758351d191f -r cc9b7e14412b web/blinkster/settings.py --- a/web/blinkster/settings.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/settings.py Tue May 25 02:43:45 2010 +0200 @@ -120,5 +120,7 @@ FORCE_LOWERCASE_TAGS = True +DEFAULT_SEGMENT_LENGTH_SECONDS = 30 + from config import * diff -r b758351d191f -r cc9b7e14412b web/blinkster/templates/segment_detail.html --- a/web/blinkster/templates/segment_detail.html Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/templates/segment_detail.html Tue May 25 02:43:45 2010 +0200 @@ -28,8 +28,15 @@
  • start_ts = {{segment.start_ts}}
  • author = {{segment.author}}
  • date = {{segment.date}}
  • +
  • content duration = {{content_duration}}
  • +
    +
     
    +
    + + {% endblock %} \ No newline at end of file diff -r b758351d191f -r cc9b7e14412b web/blinkster/urls.py --- a/web/blinkster/urls.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/urls.py Tue May 25 02:43:45 2010 +0200 @@ -41,6 +41,7 @@ (r'^roi/list/$', 'blinkster.views.roi_list'), (r'^poi/list/(?P.*)/$', 'blinkster.views.poi_list'), (r'^ldt/segment/detail/(?P.*)/(?P.*)/(?P.*)/(?P.*)/$', 'blinkster.views.segment_detail'), + (r'^ldt/segment/playlist/(?P.*)/(?P.*)/(?P.*)/(?P.*)/$', 'blinkster.views.segment_ts_playlist'), (r'^ldt/segment/search/$','blinkster.views.segment_search_post'), (r'^ldt/segment/search/(?Ptags|title|abstract|all)/(?Por|and)/(?P.*)/$','blinkster.views.segment_search_get'), (r'^photologue/', include('photologue.urls')), diff -r b758351d191f -r cc9b7e14412b web/blinkster/views.py --- a/web/blinkster/views.py Wed May 19 17:43:59 2010 +0200 +++ b/web/blinkster/views.py Tue May 25 02:43:45 2010 +0200 @@ -1,20 +1,21 @@ # Create your views here. -from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import render_to_response, get_object_or_404 +from django.http import HttpResponse +from django.shortcuts import render_to_response, get_object_or_404, get_list_or_404 from django.core.urlresolvers import reverse -from django.template import RequestContext, TemplateDoesNotExist -from django.template.loader import get_template -from django.core import serializers +from django.template import RequestContext from django.core.serializers.json import DjangoJSONEncoder from django.utils import simplejson from django.conf import settings -from blinkster.ldt.models import Segment +import re +import urllib2 +import math + + +from blinkster.ldt.models import Segment, Content from blinkster.ldt.utils import LdtSearch from blinkster.models import Roi, Poi import blinkster -import re -import urllib2 import blinkster.utils.log def serialize_queryset_to_json(response, obj_list, extra=None): @@ -26,7 +27,7 @@ objs = dict(objs, **extra) #blinkster.utils.log.debug("before views dumps JSON RES : " + repr(objs)) - res = simplejson.dumps(objs, cls=DjangoJSONEncoder,ensure_ascii=False, indent=4) + res = simplejson.dumps(objs, cls=DjangoJSONEncoder, ensure_ascii=False, indent=4) #blinkster.utils.log.debug("views dumps JSON RES : " + res) response.write(res) return response @@ -44,7 +45,7 @@ response = HttpResponse(content_type=str(content_type)) results = [] for roi_dict in [roi.serialize_to_dict() for roi in Roi.objects.all()]: - roi_dict["poi_list_url"] = unicode(settings.WEB_URL.rstrip('/') + reverse('blinkster.views.poi_list',args=[roi_dict["sid"]])+content_type_req) + roi_dict["poi_list_url"] = unicode(settings.WEB_URL.rstrip('/') + reverse('blinkster.views.poi_list', args=[roi_dict["sid"]]) + content_type_req) results.append(roi_dict) return serialize_queryset_to_json(response, results) @@ -61,19 +62,46 @@ roi = get_object_or_404(Roi, sid=roi_sid) results = [] for poi_dict in [poi.serialize_to_dict() for poi in Poi.objects.filter(roi=roi)]: - poi_dict["segment_search_url"] = unicode(settings.WEB_URL.rstrip('/') + reverse('blinkster.views.segment_search_get',args=[u"tags",u"or",urllib2.quote(poi_dict["tags"].encode("utf-8"))]) + content_type_req) + poi_dict["segment_search_url"] = unicode(settings.WEB_URL.rstrip('/') + reverse('blinkster.views.segment_search_get', args=[u"tags", u"or", urllib2.quote(poi_dict["tags"].encode("utf-8"))]) + content_type_req) results.append(poi_dict) return serialize_queryset_to_json(response, results) # Display segment detail. # This will have to be moved to ldt module -def segment_detail(request, iri_id, ensemble_id, cutting_id, element_id, project_id = None): - - segment = get_object_or_404(Segment, project_id=project_id, iri_id=iri_id, ensemble_id=ensemble_id, cutting_id=cutting_id, element_id=element_id) +def segment_detail(request, iri_id, ensemble_id, cutting_id, element_id, project_id=None): + + segment = get_list_or_404(Segment, project_id=project_id, iri_id=iri_id, ensemble_id=ensemble_id, cutting_id=cutting_id, element_id=element_id)[0] tags = segment.tags tag_list = tags.split(",") segment_tags_list = ", ".join([tag.strip() for tag in tag_list]) - return render_to_response("segment_detail.html",{'segment':segment, 'segment_tags_list':segment_tags_list}, context_instance=RequestContext(request)) + content = Content.objects.get(iri_id = iri_id) + content_dur = content.get_duration() + + if segment.duration > 0: + start_ts = segment.start_ts + duration = segment.duration + else: + start_ts = max(0,segment.start_ts - (settings.DEFAULT_SEGMENT_LENGTH_SECONDS*500) ) + end_ts = min(content_dur, start_ts + (settings.DEFAULT_SEGMENT_LENGTH_SECONDS*1000)) + duration = end_ts - start_ts + + segment_relative_duration = max(int(float(duration) / float(content_dur) * 100), 1) + segment_relative_start = int(float(start_ts) / float(content_dur) * 100) + + return render_to_response("segment_detail.html", + {'segment':segment, + 'segment_tags_list':segment_tags_list, + 'iri_id':iri_id, + 'ensemble_id':ensemble_id, + 'cutting_id':cutting_id, + 'element_id':element_id, + 'project_id':project_id, + 'content_duration':content_dur, + 'start_ts':start_ts, + 'duration':duration, + 'segment_relative_duration':segment_relative_duration, + 'segment_relative_start':segment_relative_start + }, context_instance=RequestContext(request)) def segment_search_post(request): query = request.POST["query"] @@ -81,7 +109,7 @@ operator = request.POST["operator"] return segment_search_get(request, query, field, operator) -def segment_search_get(request, query, field = u"tags", operator=u"or"): +def segment_search_get(request, query, field=u"tags", operator=u"or"): content_type = request.GET.get("content-type") content_type_req = "" @@ -93,7 +121,7 @@ response = HttpResponse(content_type=str(content_type)) # transform tag1, tag2, tag3 in "tag1" OR "tag2" OR "tag3" - query_str = (u" " + operator.upper() + u" ").join(["\"" + t.strip() + "\"" for t in re.split("\,|\;",query)]) + query_str = (u" " + operator.upper() + u" ").join(["\"" + t.strip() + "\"" for t in re.split("\,|\;", query)]) searcher = blinkster.ldt.utils.LdtSearch() @@ -109,7 +137,44 @@ del seg["content_id"] del seg["id"] res = dict(res, **seg) - res["segment_detail_url"] = unicode(settings.WEB_URL.rstrip('/') + reverse('blinkster.views.segment_detail',args=[res["iri_id"], res["ensemble_id"], res["cutting_id"], res["element_id"]]) + content_type_req) + res["segment_detail_url"] = unicode(settings.WEB_URL.rstrip('/') + reverse('blinkster.views.segment_detail', args=[res["iri_id"], res["ensemble_id"], res["cutting_id"], res["element_id"]]) + content_type_req) results.append(res) return serialize_queryset_to_json(response, results, {u"query" : query, u"field": field, u"operator":operator, u"final_query": query_str}) + + +def segment_ts_playlist(request, iri_id, ensemble_id, cutting_id, element_id, project_id=None): + + content_type = "application/x-mpegURL; charset=utf-8" + segment = get_list_or_404(Segment, project_id=project_id, iri_id=iri_id, ensemble_id=ensemble_id, cutting_id=cutting_id, element_id=element_id)[0] + start_ts = int(math.floor(segment.start_ts / 1000.0)) + + content = Content.objects.get(iri_id=iri_id) + content_duration = content.get_duration() + + if segment.duration == 0: + start_ts = max(start_ts-settings.DEFAULT_SEGMENT_LENGTH_SECONDS/2,0) + seg_duration = settings.DEFAULT_SEGMENT_LENGTH_SECONDS + else: + seg_duration = int(math.ceil(segment.duration / 1000.0)) + + + end_ts = min(math.floor(content_duration/1000.0), start_ts+seg_duration) + + respstr = u"#EXTM3U\n" + respstr += u"#EXT-X-TARGETDURATION:1\n" + respstr += u"#EXT-X-MEDIA-SEQUENCE:0\n" + + ext = ".ts" + + + for i in range(start_ts,end_ts+1): + respstr += u"#EXTINF:1,\n" + respstr += u"%s%s/media/videos/%s/fileSequence%s%s\n" % (settings.WEB_URL, settings.MEDIA_BASE_URL,iri_id, i, ext) + + respstr += u"#EXT-X-ENDLIST\n" + + + response = HttpResponse(content=respstr, mimetype=content_type) + + return response \ No newline at end of file diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,31 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# jcc package + +import os, sys + +if sys.platform == 'win32': + from jcc.config import SHARED + if SHARED: + path = os.environ['Path'].split(os.pathsep) + eggpath = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + if eggpath not in path: + path.insert(0, eggpath) + os.environ['Path'] = os.pathsep.join(path) + +if __name__ == '__main__': + import jcc.__main__ +else: + from _jcc import initVM + +CLASSPATH=os.path.join(os.path.abspath(os.path.dirname(__file__)), "classes") diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/__main__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/__main__.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,88 @@ + +import sys +from jcc import cpp + +if len(sys.argv) == 1 or '--help' in sys.argv: + help = ''' + JCC - C++/Python Java Native Interface Code Generator + + Usage: python -m jcc.__main__ [options] [actions] + + Input options: + --jar JARFILE - make JCC wrap all public classes found in + JARFILE, add it to the module's CLASSPATH and + include it in the distribution + --include JARFILE - include JARFILE in the distribution and add + it to the module's CLASSPATH + --exclude CLASS - explicitly don't wrap CLASS + --package PACKAGE - add PACKAGE to the list of packages from + which dependencies are automatically wrapped + --classpath [PATH|JAR] - add [PATH|JAR] to CLASSPATH while generating + wrappers + --libpath [PATH] - add [PATH] to java.library.path while generating + wrappers + --module MODULE - include Python MODULE in the distribution + --reserved SYMBOL - mark SYMBOL as a reserved word that will be + mangled in the generated C++ code to avoid + clashes with C/C++ reserved words or header + file definitions + --vmarg - add extra Java VM initialization parameter + + Python wrapper generation options: + --python NAME - generate wrappers for use from Python in a module + called NAME + --version VERSION - the generated module's version number + --shared - generate a module that links against a shared + library version of the JCC runtime so that + multiple JCC-wrapped modules can be used within + the same Python runtime + --sequence CLASS METHODSIGNATURE + - generate a pythonic sequence protocol wrapper for + CLASS + --mapping CLASS METHODSIGNATURE1 METHODSIGNATURE2 + - generate a pythonic map protocol wrapper for CLASS + --rename CLASS1=NAME1,CLASS2=NAME2,... + - rename one or more Python wrapper classes to + avoid name clashes due to the flattening of + the Java package namespaces as mapped into + Python + --no-generics - disable support for Java generics + + If you're planning to use pythonic wrappers you should read the relevant + documentation first: + http://lucene.apache.org/pylucene/jcc/documentation/readme.html#python + + Output options: + --debug - generate a module using the C++ compiler's + debug options + --output OUTPUTDIR - the wrapper will be generated in OUTPUTDIR, + 'build' by default + --files N - split the generated wrapper file into at least + N files to workaround C++ compiler file size + limitations + --arch - Mac OS X only: filter the -arch parameters + Python was configured with to build leaner + binaries, faster + + Actions: + --build - generate the wrapper and compile it + --compile - recompile the (previously generated) module + --install - install the wrapper in the local site-packages + + Distribution actions: + --use-distutils - use distutils even when setuptools is availble + --bdist - generate a binary distutils-based distribution + or a setuptools-based .egg + --wininst - create an installer application for Microsoft + Windows + + Other distutils/setuptools options (there are passed right through): + --compiler COMPILER - use COMPILER instead of the platform default + --root ROOTDIR + --install-dir INSTALLDIR + --prefix PREFIX +''' + print help + sys.exit(0) + +cpp.jcc(sys.argv) diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/_jcc.so Binary file web/lib/arch/osx/jcc/_jcc.so has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/config.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/config.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,7 @@ + +INCLUDES=['/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers'] +CFLAGS=['-fno-strict-aliasing', '-Wno-write-strings'] +DEBUG_CFLAGS=['-O0', '-g', '-DDEBUG'] +LFLAGS=['-framework', 'JavaVM'] +SHARED=True + diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/cpp.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/cpp.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,1053 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os, sys, zipfile, _jcc + +python_ver = '%d.%d.%d' %(sys.version_info[0:3]) +if python_ver < '2.4': + from sets import Set as set + + def split_pkg(string, sep): + parts = string.split(sep) + if len(parts) > 1: + return sep.join(parts[:-1]), parts[-1] + return parts + + def sort(list, fn=None, key=None): + if fn: + list.sort(fn) + elif key: + def fn(x, y): + return cmp(key(x), key(y)) + list.sort(fn) + else: + list.sort() + +else: + def split_pkg(string, sep): + return string.rsplit(sep, 1) + + def sort(list, fn=None, key=None): + if fn: + list.sort(cmp=fn) + elif key: + list.sort(key=key) + else: + list.sort() + + +class JavaError(Exception): + + def getJavaException(self): + return self.args[0] + + def __str__(self): + writer = StringWriter() + self.getJavaException().printStackTrace(PrintWriter(writer)) + + return '\n'.join((super(JavaError, self).__str__(), + "Java stacktrace:", str(writer))) + + +class InvalidArgsError(Exception): + pass + + +_jcc._set_exception_types(JavaError, InvalidArgsError) +from _jcc import * + + +INDENT = ' ' +HALF_INDENT = ' ' + +PRIMITIVES = { 'boolean': 'Z', + 'byte': 'B', + 'char': 'C', + 'double': 'D', + 'float': 'F', + 'int': 'I', + 'long': 'J', + 'short': 'S', + 'void': 'V' } + +RESERVED = set(['delete', 'and', 'or', 'not', 'xor', 'union', 'NULL', + 'register', 'const', 'bool', 'operator', 'typeof']) + +def cppname(name): + + if name in RESERVED: + return name + '$' + + return name + + +def cppnames(names): + + return [cppname(name) for name in names] + + +def typename(cls, current, const): + + if cls.isArray(): + componentType = cls.getComponentType() + if componentType.isArray(): + name = 'JArray< %s >' %(typename(componentType, current, False)) + else: + name = 'JArray<%s>' %(typename(componentType, current, False)) + + elif cls.isPrimitive(): + name = cls.getName() + if name != 'void': + name = 'j' + name + const = False + + elif cls == current: + name = cppname(cls.getName().split('.')[-1]) + + else: + name = '::'.join([cppname(name) for name in cls.getName().split('.')]) + + if const: + return "const %s&" %(name) + + return name + + +def argnames(params, cls): + + if not params: + return '', '' + + count = len(params) + decls = ', '.join(["%s a%d" %(typename(params[i], cls, True), i) + for i in xrange(count)]) + args = ', '.join(['a%d%s' %(i, not params[i].isPrimitive() and '.this$' or '') + for i in xrange(count)]) + + return decls, ', ' + args + + +def line(out, indent=0, string='', *args): + + out.write(INDENT * indent) + out.write(string % args) + out.write('\n') + + +def known(cls, typeset, declares, packages, excludes, generics): + + if generics: + if Class.instance_(cls): + cls = Class.cast_(cls) + elif ParameterizedType.instance_(cls): + pt = ParameterizedType.cast_(cls) + if not known(pt.getRawType(), typeset, declares, packages, excludes, + True): + return False + for ta in pt.getActualTypeArguments(): + if TypeVariable.instance_(ta): + continue + if not known(ta, typeset, declares, packages, excludes, True): + return False + return True + elif WildcardType.instance_(cls): + wc = WildcardType.cast_(cls) + for ub in wc.getUpperBounds(): + if not known(ub, typeset, declares, packages, excludes, True): + return False + return True + elif TypeVariable.instance_(cls): + for bounds in TypeVariable.cast_(cls).getBounds(): + if not known(bounds, typeset, declares, packages, excludes, + True): + return False + return True + elif GenericArrayType.instance_(cls): + return known(GenericArrayType.cast_(cls).getGenericComponentType(), + typeset, declares, packages, excludes, True) + else: + raise TypeError, (cls, cls.getClass()) + + while cls.isArray(): + cls = cls.getComponentType() + + className = cls.getName() + if className in excludes: + return False + + if cls.isPrimitive(): + return True + + if cls in typeset: + declares.add(cls) + return True + + if split_pkg(className, '.')[0] in packages: + typeset.add(cls) + declares.add(cls) + cls = cls.getSuperclass() + while cls and cls not in typeset: + typeset.add(cls) + cls = cls.getSuperclass() + return True + + return False + + +def find_method(cls, name, params): + + declared = False + while True: + try: + if declared: + method = cls.getDeclaredMethod(name, params) + else: + method = cls.getMethod(name, params) + break + except JavaError, e: + if (e.getJavaException().getClass().getName() == 'java.lang.NoSuchMethodException'): + if not declared: + declared = True + else: + cls = cls.getSuperclass() + if not cls: + return None + continue + raise + + modifiers = method.getModifiers() + if Modifier.isAbstract(modifiers): + return None + if Modifier.isPrivate(modifiers): + return None + + return method + + +def signature(fn, argsOnly=False): + + def typename(cls): + array = '' + while cls.isArray(): + array += '[' + cls = cls.getComponentType() + if cls.isPrimitive(): + return array + PRIMITIVES[cls.getName()] + return '%sL%s;' %(array, cls.getName().replace('.', '/')) + + if isinstance(fn, Constructor): + returnType = 'V' + elif isinstance(fn, Method): + returnType = typename(fn.getReturnType()) + elif isinstance(fn, Field): + return typename(fn.getType()) + + if argsOnly: + return '(%s)' %(''.join([typename(param) + for param in fn.getParameterTypes()])) + + return '(%s)%s' %(''.join([typename(param) + for param in fn.getParameterTypes()]), + returnType) + + +def forward(out, namespace, indent): + + for name, entries in namespace.iteritems(): + if entries is True: + line(out, indent, 'class %s;', cppname(name)) + else: + line(out, indent, 'namespace %s {', cppname(name)) + forward(out, entries, indent + 1) + line(out, indent, '}') + + +def expandjar(path): + + jar = zipfile.ZipFile(path, 'r') + + for member in jar.infolist(): + f = member.filename + if f.endswith('.class'): + yield f.split('.')[0].replace('/', '.') + + jar.close() + + +def jcc(args): + + classNames = set() + packages = set() + jars = [] + classpath = [] + libpath = [] + vmargs = ['-Djava.awt.headless=true'] + moduleName = None + modules = [] + build = False + install = False + recompile = False + output = 'build' + debug = False + excludes = [] + version = '' + mappings = {} + sequences = {} + renames = {} + env = None + wrapperFiles = 1 + prefix = None + root = None + install_dir = None + home_dir = None + use_distutils = False + shared = False + dist = False + wininst = False + compiler = None + generics = hasattr(_jcc, "Type") + arch = [] + + i = 1 + while i < len(args): + arg = args[i] + if arg.startswith('-'): + if arg == '--jar': + i += 1 + classpath.append(args[i]) + classNames.update(expandjar(args[i])) + jars.append(args[i]) + elif arg == '--include': + i += 1 + classpath.append(args[i]) + jars.append(args[i]) + elif arg == '--package': + i += 1 + packages.add(args[i]) + elif arg == '--classpath': + i += 1 + classpath.append(args[i]) + elif arg == '--libpath': + i += 1 + libpath.append(args[i]) + elif arg == '--vmarg': + i += 1 + vmargs.append(args[i]) + elif arg == '--python': + from python import python, module + i += 1 + moduleName = args[i] + elif arg == '--module': + i += 1 + modules.append(args[i]) + elif arg == '--build': + from python import compile + build = True + elif arg == '--install': + from python import compile + install = True + elif arg == '--compile': + from python import compile + recompile = True + elif arg == '--output': + i += 1 + output = args[i] + elif arg == '--debug': + debug = True + elif arg == '--exclude': + i += 1 + excludes.append(args[i]) + elif arg == '--version': + i += 1 + version = args[i] + elif arg == '--mapping': + mappings[args[i + 1]] = args[i + 2] + i += 2 + elif arg == '--sequence': + sequences[args[i + 1]] = (args[i + 2], args[i + 3]) + i += 3 + elif arg == '--rename': + i += 1 + renames.update(dict([arg.split('=') + for arg in args[i].split(',')])) + elif arg == '--files': + i += 1 + wrapperFiles = args[i] + if wrapperFiles != 'separate': + wrapperFiles = int(wrapperFiles) + elif arg == '--prefix': + i += 1 + prefix = args[i] + elif arg == '--root': + i += 1 + root = args[i] + elif arg == '--install-dir': + i += 1 + install_dir = args[i] + elif arg == '--home': + i += 1 + home_dir = args[i] + elif arg == '--use-distutils': + use_distutils = True + elif arg == '--shared': + shared = True + elif arg == '--bdist': + from python import compile + dist = True + elif arg == '--wininst': + from python import compile + wininst = True + dist = True + elif arg == '--compiler': + i += 1 + compiler = args[i] + elif arg == '--reserved': + i += 1 + RESERVED.update(args[i].split(',')) + elif arg == '--arch': + i += 1 + arch.append(args[i]) + elif arg == '--no-generics': + generics = False + else: + raise ValueError, "Invalid argument: %s" %(arg) + else: + classNames.add(arg) + i += 1 + + if libpath: + vmargs.append('-Djava.library.path=' + os.pathsep.join(libpath)) + + env = initVM(os.pathsep.join(classpath) or None, + maxstack='512k', vmargs=' '.join(vmargs)) + + typeset = set() + excludes = set(excludes) + + if recompile or not build and (install or dist): + if moduleName is None: + raise ValueError, 'module name not specified (use --python)' + else: + compile(env, os.path.dirname(args[0]), output, moduleName, + install, dist, debug, jars, version, + prefix, root, install_dir, home_dir, use_distutils, + shared, compiler, modules, wininst, arch, generics) + else: + for className in classNames: + if className in excludes: + continue + cls = findClass(className.replace('.', '/')) + if cls is None: + raise ValueError, className + if Modifier.isPublic(cls.getModifiers()): + typeset.add(cls) + cls = cls.getSuperclass() + while cls and cls not in typeset: + typeset.add(cls) + cls = cls.getSuperclass() + typeset.add(findClass('java/lang/Class')) + typeset.add(findClass('java/lang/String')) + typeset.add(findClass('java/lang/Throwable')) + typeset.add(findClass('java/lang/Exception')) + typeset.add(findClass('java/lang/RuntimeException')) + if moduleName: + typeset.add(findClass('java/lang/Number')) + typeset.add(findClass('java/lang/Boolean')) + typeset.add(findClass('java/lang/Integer')) + typeset.add(findClass('java/lang/Long')) + typeset.add(findClass('java/lang/Double')) + typeset.add(findClass('java/util/Iterator')) + typeset.add(findClass('java/util/Enumeration')) + typeset.add(findClass('java/io/StringWriter')) + typeset.add(findClass('java/io/PrintWriter')) + typeset.add(findClass('java/io/Writer')) + packages.add('java.lang') + + if moduleName: + cppdir = os.path.join(output, '_%s' %(moduleName)) + else: + cppdir = output + + allInOne = wrapperFiles != 'separate' + if allInOne: + if not os.path.isdir(cppdir): + os.makedirs(cppdir) + if wrapperFiles <= 1: + out_cpp = file(os.path.join(cppdir, '__wrap__.cpp'), 'w') + else: + fileCount = 1 + fileName = '__wrap%02d__.cpp' %(fileCount) + out_cpp = file(os.path.join(cppdir, fileName), 'w') + + done = set() + todo = typeset - done + if allInOne and wrapperFiles > 1: + classesPerFile = max(1, len(todo) / wrapperFiles) + classCount = 0 + while todo: + for cls in todo: + classCount += 1 + className = cls.getName() + names = className.split('.') + dir = os.path.join(cppdir, *names[:-1]) + if not os.path.isdir(dir): + os.makedirs(dir) + + fileName = os.path.join(dir, names[-1]) + out_h = file(fileName + '.h', "w") + line(out_h, 0, '#ifndef %s_H', '_'.join(names)) + line(out_h, 0, '#define %s_H', '_'.join(names)) + + (superCls, constructors, methods, protectedMethods, + fields, instanceFields, declares) = \ + header(env, out_h, cls, typeset, packages, excludes, + generics) + + if not allInOne: + out_cpp = file(fileName + '.cpp', 'w') + names, superNames = code(env, out_cpp, + cls, superCls, constructors, + methods, protectedMethods, + fields, instanceFields, + declares, typeset) + if moduleName: + python(env, out_h, out_cpp, + cls, superCls, names, superNames, + constructors, methods, protectedMethods, + fields, instanceFields, + mappings.get(className), sequences.get(className), + renames.get(className), + declares, typeset, moduleName, generics) + + line(out_h) + line(out_h, 0, '#endif') + out_h.close() + + if not allInOne: + out_cpp.close() + elif wrapperFiles > 1: + if classCount >= classesPerFile: + out_cpp.close() + fileCount += 1 + fileName = '__wrap%02d__.cpp' %(fileCount) + out_cpp = file(os.path.join(cppdir, fileName), 'w') + classCount = 0 + + done.update(todo) + todo = typeset - done + + if allInOne: + out_cpp.close() + + if moduleName: + out = file(os.path.join(cppdir, moduleName) + '.cpp', 'w') + module(out, allInOne, done, cppdir, moduleName, shared, generics) + out.close() + if build or install or dist: + compile(env, os.path.dirname(args[0]), output, moduleName, + install, dist, debug, jars, version, + prefix, root, install_dir, home_dir, use_distutils, + shared, compiler, modules, wininst, arch, generics) + + +def header(env, out, cls, typeset, packages, excludes, generics): + + names = cls.getName().split('.') + superCls = cls.getSuperclass() + declares = set([cls.getClass()]) + + interfaces = [] + for interface in cls.getInterfaces(): + if superCls and interface.isAssignableFrom(superCls): + continue + if known(interface, typeset, declares, packages, excludes, False): + interfaces.append(interface) + + if cls.isInterface(): + if interfaces: + superCls = interfaces.pop(0) + else: + superCls = findClass('java/lang/Object') + superClsName = superCls.getName() + elif superCls: + superClsName = superCls.getName() + else: + superClsName = 'JObject' + + constructors = [] + for constructor in cls.getDeclaredConstructors(): + if Modifier.isPublic(constructor.getModifiers()): + if generics: + params = constructor.getGenericParameterTypes() + if len(params) == 1: + if params[0] == cls: + continue + if ParameterizedType.instance_(params[0]): + param = ParameterizedType.cast_(params[0]) + if param.getRawType() == cls: + continue + else: + params = constructor.getParameterTypes() + if len(params) == 1 and params[0] == cls: + continue + for param in params: + if not known(param, typeset, declares, packages, excludes, + generics): + break + else: + constructors.append(constructor) + sort(constructors, key=lambda x: len(x.getParameterTypes())) + + methods = {} + protectedMethods = [] + for method in cls.getDeclaredMethods(): + modifiers = method.getModifiers() + if Modifier.isPublic(modifiers): + if generics: + returnType = method.getGenericReturnType() + else: + returnType = method.getReturnType() + if not known(returnType, typeset, declares, packages, excludes, + generics): + continue + sig = "%s:%s" %(method.getName(), signature(method, True)) + if sig in methods and returnType != cls: + continue + if generics: + params = method.getGenericParameterTypes() + else: + params = method.getParameterTypes() + for param in params: + if not known(param, typeset, declares, packages, excludes, + generics): + break + else: + methods[sig] = method + elif Modifier.isProtected(modifiers): + protectedMethods.append(method) + for interface in interfaces: + for method in interface.getMethods(): + sig = "%s:%s" %(method.getName(), signature(method, True)) + if sig not in methods: + if generics: + param = method.getGenericReturnType() + else: + param = method.getReturnType() + if not known(param, typeset, declares, packages, excludes, + generics): + continue + if generics: + params = method.getGenericParameterTypes() + else: + params = method.getParameterTypes() + for param in params: + if not known(param, typeset, declares, packages, excludes, + generics): + break + else: + methods[sig] = method + + def _compare(m0, m1): + value = cmp(m0.getName(), m1.getName()) + if value == 0: + value = len(m0.getParameterTypes()) - len(m1.getParameterTypes()) + return value + + methods = methods.values() + sort(methods, fn=_compare) + + for constructor in constructors: + if generics: + exceptions = constructor.getGenericExceptionTypes() + else: + exceptions = constructor.getExceptionTypes() + for exception in exceptions: + known(exception, typeset, declares, packages, excludes, generics) + for method in methods: + if generics: + exceptions = method.getGenericExceptionTypes() + else: + exceptions = method.getExceptionTypes() + for exception in exceptions: + known(exception, typeset, declares, packages, excludes, generics) + + fields = [] + instanceFields = [] + for field in cls.getDeclaredFields(): + modifiers = field.getModifiers() + if Modifier.isPublic(modifiers): + if generics: + fieldType = field.getGenericType() + else: + fieldType = field.getType() + if not known(fieldType, typeset, declares, packages, excludes, + generics): + continue + if Modifier.isStatic(modifiers): + fields.append(field) + else: + instanceFields.append(field) + sort(fields, key=lambda x: x.getName()) + sort(instanceFields, key=lambda x: x.getName()) + + line(out) + superNames = superClsName.split('.') + line(out, 0, '#include "%s.h"', '/'.join(superNames)) + + line(out, 0) + namespaces = {} + for declare in declares: + namespace = namespaces + if declare not in (cls, superCls): + declareNames = declare.getName().split('.') + for declareName in declareNames[:-1]: + namespace = namespace.setdefault(declareName, {}) + namespace[declareNames[-1]] = True + forward(out, namespaces, 0) + line(out, 0, 'template class JArray;') + + indent = 0; + line(out) + for name in names[:-1]: + line(out, indent, 'namespace %s {', cppname(name)) + indent += 1 + + line(out) + if superClsName == 'JObject': + line(out, indent, 'class %s : public JObject {', cppname(names[-1])) + else: + line(out, indent, 'class %s : public %s {', + cppname(names[-1]), '::'.join(cppnames(superNames))) + + line(out, indent, 'public:') + indent += 1 + + if methods or protectedMethods or constructors: + line(out, indent, 'enum {') + for constructor in constructors: + line(out, indent + 1, 'mid_init$_%s,', + env.strhash(signature(constructor))) + for method in methods: + line(out, indent + 1, 'mid_%s_%s,', method.getName(), + env.strhash(signature(method))) + for method in protectedMethods: + line(out, indent + 1, 'mid_%s_%s,', method.getName(), + env.strhash(signature(method))) + line(out, indent + 1, 'max_mid') + line(out, indent, '};') + + if instanceFields: + line(out) + line(out, indent, 'enum {') + for field in instanceFields: + line(out, indent + 1, 'fid_%s,', field.getName()) + line(out, indent + 1, 'max_fid') + line(out, indent, '};') + + line(out) + line(out, indent, 'static java::lang::Class *class$;'); + line(out, indent, 'static jmethodID *mids$;'); + if instanceFields: + line(out, indent, 'static jfieldID *fids$;'); + line(out, indent, 'static jclass initializeClass();'); + line(out) + + line(out, indent, 'explicit %s(jobject obj) : %s(obj) {', + cppname(names[-1]), '::'.join(cppnames(superNames))) + line(out, indent + 1, 'if (obj != NULL)'); + line(out, indent + 2, 'initializeClass();') + line(out, indent, '}') + line(out, indent, '%s(const %s& obj) : %s(obj) {}', + cppname(names[-1]), cppname(names[-1]), + '::'.join(cppnames(superNames))) + + if fields: + line(out) + for field in fields: + fieldType = field.getType() + fieldName = cppname(field.getName()) + if fieldType.isPrimitive(): + line(out, indent, 'static %s %s;', + typename(fieldType, cls, False), fieldName) + else: + line(out, indent, 'static %s *%s;', + typename(fieldType, cls, False), fieldName) + + if instanceFields: + line(out) + for field in instanceFields: + fieldType = field.getType() + fieldName = field.getName() + modifiers = field.getModifiers() + line(out, indent, '%s _get_%s() const;', + typename(fieldType, cls, False), fieldName) + if not Modifier.isFinal(modifiers): + line(out, indent, 'void _set_%s(%s) const;', + fieldName, typename(fieldType, cls, True)) + + if constructors: + line(out) + for constructor in constructors: + params = [typename(param, cls, True) + for param in constructor.getParameterTypes()] + line(out, indent, '%s(%s);', cppname(names[-1]), ', '.join(params)) + + if methods: + line(out) + for method in methods: + modifiers = method.getModifiers() + if Modifier.isStatic(modifiers): + prefix = 'static ' + const = '' + else: + prefix = '' + const = ' const' + params = [typename(param, cls, True) + for param in method.getParameterTypes()] + methodName = cppname(method.getName()) + line(out, indent, '%s%s %s(%s)%s;', + prefix, typename(method.getReturnType(), cls, False), + methodName, ', '.join(params), const) + + indent -= 1 + line(out, indent, '};') + + while indent: + indent -= 1 + line(out, indent, '}') + + return (superCls, constructors, methods, protectedMethods, + fields, instanceFields, declares) + + +def code(env, out, cls, superCls, constructors, methods, protectedMethods, + fields, instanceFields, declares, typeset): + + className = cls.getName() + names = className.split('.') + + if superCls: + superClsName = superCls.getName() + else: + superClsName = 'JObject' + superNames = superClsName.split('.') + + line(out, 0, '#include ') + line(out, 0, '#include "JCCEnv.h"') + line(out, 0, '#include "%s.h"', className.replace('.', '/')) + for declare in declares: + if declare not in (cls, superCls): + line(out, 0, '#include "%s.h"', declare.getName().replace('.', '/')) + line(out, 0, '#include "JArray.h"') + + indent = 0 + line(out) + for name in names[:-1]: + line(out, indent, 'namespace %s {', cppname(name)) + indent += 1 + + line(out) + line(out, indent, 'java::lang::Class *%s::class$ = NULL;', + cppname(names[-1])) + line(out, indent, 'jmethodID *%s::mids$ = NULL;', cppname(names[-1])) + if instanceFields: + line(out, indent, 'jfieldID *%s::fids$ = NULL;', cppname(names[-1])) + + for field in fields: + fieldType = field.getType() + fieldName = cppname(field.getName()) + typeName = typename(fieldType, cls, False) + if fieldType.isPrimitive(): + line(out, indent, '%s %s::%s = (%s) 0;', + typeName, cppname(names[-1]), fieldName, typeName) + else: + line(out, indent, '%s *%s::%s = NULL;', + typeName, cppname(names[-1]), fieldName) + + line(out) + line(out, indent, 'jclass %s::initializeClass()', cppname(names[-1])) + line(out, indent, '{') + line(out, indent + 1, 'if (!class$)') + line(out, indent + 1, '{') + line(out) + line(out, indent + 2, 'jclass cls = (jclass) env->findClass("%s");', + className.replace('.', '/')) + + if methods or protectedMethods or constructors: + line(out) + line(out, indent + 2, 'mids$ = new jmethodID[max_mid];') + for constructor in constructors: + sig = signature(constructor) + line(out, indent + 2, + 'mids$[mid_init$_%s] = env->getMethodID(cls, "", "%s");', + env.strhash(sig), sig) + isExtension = False + for method in methods: + methodName = method.getName() + if methodName == 'pythonExtension': + isExtension = True + sig = signature(method) + line(out, indent + 2, + 'mids$[mid_%s_%s] = env->get%sMethodID(cls, "%s", "%s");', + methodName, env.strhash(sig), + Modifier.isStatic(method.getModifiers()) and 'Static' or '', + methodName, sig) + for method in protectedMethods: + methodName = method.getName() + sig = signature(method) + line(out, indent + 2, + 'mids$[mid_%s_%s] = env->get%sMethodID(cls, "%s", "%s");', + methodName, env.strhash(sig), + Modifier.isStatic(method.getModifiers()) and 'Static' or '', + methodName, sig) + + if instanceFields: + line(out) + line(out, indent + 2, 'fids$ = new jfieldID[max_fid];') + for field in instanceFields: + fieldName = field.getName() + line(out, indent + 2, + 'fids$[fid_%s] = env->getFieldID(cls, "%s", "%s");', + fieldName, fieldName, signature(field)) + + line(out) + line(out, indent + 2, 'class$ = (java::lang::Class *) new JObject(cls);') + + if fields: + line(out, indent + 2, 'cls = (jclass) class$->this$;') + line(out) + for field in fields: + fieldType = field.getType() + fieldName = field.getName() + if fieldType.isPrimitive(): + line(out, indent + 2, + '%s = env->getStatic%sField(cls, "%s");', + cppname(fieldName), fieldType.getName().capitalize(), + fieldName) + else: + line(out, indent + 2, + '%s = new %s(env->getStaticObjectField(cls, "%s", "%s"));', + cppname(fieldName), typename(fieldType, cls, False), + fieldName, signature(field)) + + line(out, indent + 1, '}') + line(out, indent + 1, 'return (jclass) class$->this$;') + line(out, indent, '}') + + for constructor in constructors: + line(out) + sig = signature(constructor) + decls, args = argnames(constructor.getParameterTypes(), cls) + + line(out, indent, "%s::%s(%s) : %s(env->newObject(initializeClass, &mids$, mid_init$_%s%s)) {}", + cppname(names[-1]), cppname(names[-1]), decls, + '::'.join(cppnames(superNames)), + env.strhash(sig), args) + + for method in methods: + modifiers = method.getModifiers() + returnType = method.getReturnType() + params = method.getParameterTypes() + methodName = method.getName() + superMethod = None + isStatic = Modifier.isStatic(modifiers) + + if (isExtension and not isStatic and superCls and + Modifier.isNative(modifiers)): + superMethod = find_method(superCls, methodName, params) + if superMethod is None: + continue + + if isStatic: + qualifier = 'Static' + this = 'cls' + midns = '' + const = '' + else: + isStatic = False + if superMethod is not None: + qualifier = 'Nonvirtual' + this = 'this$, (jclass) %s::class$->this$' %('::'.join(cppnames(superNames))) + declaringClass = superMethod.getDeclaringClass() + midns = '%s::' %(typename(declaringClass, cls, False)) + else: + qualifier = '' + this = 'this$' + midns = '' + const = ' const' + + sig = signature(method) + decls, args = argnames(params, cls) + + line(out) + line(out, indent, '%s %s::%s(%s)%s', + typename(returnType, cls, False), cppname(names[-1]), + cppname(methodName), decls, const) + line(out, indent, '{') + if isStatic: + line(out, indent + 1, 'jclass cls = initializeClass();'); + if returnType.isPrimitive(): + line(out, indent + 1, + '%senv->call%s%sMethod(%s, %smids$[%smid_%s_%s]%s);', + not returnType.getName() == 'void' and 'return ' or '', + qualifier, returnType.getName().capitalize(), this, + midns, midns, methodName, env.strhash(sig), args) + else: + line(out, indent + 1, + 'return %s(env->call%sObjectMethod(%s, %smids$[%smid_%s_%s]%s));', + typename(returnType, cls, False), qualifier, this, + midns, midns, methodName, env.strhash(sig), args) + line(out, indent, '}') + + if instanceFields: + for field in instanceFields: + fieldType = field.getType() + fieldName = field.getName() + line(out) + line(out, indent, '%s %s::_get_%s() const', + typename(fieldType, cls, False), cppname(names[-1]), fieldName) + line(out, indent, '{') + if fieldType.isPrimitive(): + line(out, indent + 1, + 'return env->get%sField(this$, fids$[fid_%s]);', + fieldType.getName().capitalize(), fieldName) + else: + line(out, indent + 1, + 'return %s(env->getObjectField(this$, fids$[fid_%s]));', + typename(fieldType, cls, False), fieldName) + line(out, indent, '}') + + if not Modifier.isFinal(field.getModifiers()): + line(out) + line(out, indent, 'void %s::_set_%s(%s a0) const', + cppname(names[-1]), fieldName, + typename(fieldType, cls, True)) + line(out, indent, '{') + if fieldType.isPrimitive(): + line(out, indent + 1, + 'env->set%sField(this$, fids$[fid_%s], a0);', + fieldType.getName().capitalize(), fieldName) + else: + line(out, indent + 1, + 'env->setObjectField(this$, fids$[fid_%s], a0.this$);', + fieldName) + line(out, indent, '}') + + while indent: + indent -= 1 + line(out, indent, '}') + + return names, superNames + + +if __name__ == '__main__': + jcc(sys.argv) diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/patches/patch.4195 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/patches/patch.4195 Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +--- runpy.py.old 2008-10-19 16:02:18.000000000 -0700 ++++ runpy.py 2008-10-19 16:13:44.000000000 -0700 +@@ -79,10 +79,13 @@ + loader = get_loader(mod_name) + if loader is None: + raise ImportError("No module named %s" % mod_name) + if loader.is_package(mod_name): +- raise ImportError(("%s is a package and cannot " + +- "be directly executed") % mod_name) ++ try: ++ return _get_module_details('.'.join((mod_name, '__main__'))) ++ except ImportError, e: ++ raise ImportError(("%s; %s is a package and cannot " + ++ "be directly executed") %(e, mod_name)) + code = loader.get_code(mod_name) + if code is None: + raise ImportError("No code object available for %s" % mod_name) + filename = _get_filename(loader, mod_name) diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/patches/patch.43.0.6c11 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/patches/patch.43.0.6c11 Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,135 @@ +Index: setuptools/extension.py +=================================================================== +--- setuptools/extension.py (revision 75864) ++++ setuptools/extension.py (working copy) +@@ -28,6 +28,11 @@ + class Library(Extension): + """Just like a regular Extension, but built as a library instead""" + ++ def __init__(self, *args, **kwds): ++ self.force_shared = kwds.pop('force_shared', False) ++ Extension.__init__(self, *args, **kwds) ++ ++ + import sys, distutils.core, distutils.extension + distutils.core.Extension = Extension + distutils.extension.Extension = Extension +Index: setuptools/command/build_ext.py +=================================================================== +--- setuptools/command/build_ext.py (revision 75864) ++++ setuptools/command/build_ext.py (working copy) +@@ -85,8 +85,12 @@ + if fullname in self.ext_map: + ext = self.ext_map[fullname] + if isinstance(ext,Library): ++ if ext.force_shared and not use_stubs: ++ _libtype = 'shared' ++ else: ++ _libtype = libtype + fn, ext = os.path.splitext(filename) +- return self.shlib_compiler.library_filename(fn,libtype) ++ return self.shlib_compiler.library_filename(fn,_libtype) + elif use_stubs and ext._links_to_dynamic: + d,fn = os.path.split(filename) + return os.path.join(d,'dl-'+fn) +@@ -170,14 +174,22 @@ + def build_extension(self, ext): + _compiler = self.compiler + try: ++ force_shared = False + if isinstance(ext,Library): + self.compiler = self.shlib_compiler ++ force_shared = ext.force_shared and not use_stubs ++ if force_shared: ++ self.compiler.link_shared_object = \ ++ sh_link_shared_object.__get__(self.compiler) + _build_ext.build_extension(self,ext) + if ext._needs_stub: + self.write_stub( + self.get_finalized_command('build_py').build_lib, ext + ) + finally: ++ if force_shared: ++ self.compiler.link_shared_object = \ ++ link_shared_object.__get__(self.compiler) + self.compiler = _compiler + + def links_to_dynamic(self, ext): +@@ -244,44 +256,41 @@ + os.unlink(stub_file) + + +-if use_stubs or os.name=='nt': +- # Build shared libraries +- # +- def link_shared_object(self, objects, output_libname, output_dir=None, +- libraries=None, library_dirs=None, runtime_library_dirs=None, +- export_symbols=None, debug=0, extra_preargs=None, +- extra_postargs=None, build_temp=None, target_lang=None +- ): self.link( +- self.SHARED_LIBRARY, objects, output_libname, +- output_dir, libraries, library_dirs, runtime_library_dirs, +- export_symbols, debug, extra_preargs, extra_postargs, +- build_temp, target_lang +- ) +-else: +- # Build static libraries everywhere else +- libtype = 'static' ++def sh_link_shared_object(self, objects, output_libname, output_dir=None, ++ libraries=None, library_dirs=None, runtime_library_dirs=None, ++ export_symbols=None, debug=0, extra_preargs=None, ++ extra_postargs=None, build_temp=None, target_lang=None ++): self.link(self.SHARED_LIBRARY, objects, output_libname, ++ output_dir, libraries, library_dirs, runtime_library_dirs, ++ export_symbols, debug, extra_preargs, extra_postargs, ++ build_temp, target_lang) + +- def link_shared_object(self, objects, output_libname, output_dir=None, +- libraries=None, library_dirs=None, runtime_library_dirs=None, +- export_symbols=None, debug=0, extra_preargs=None, +- extra_postargs=None, build_temp=None, target_lang=None +- ): +- # XXX we need to either disallow these attrs on Library instances, +- # or warn/abort here if set, or something... +- #libraries=None, library_dirs=None, runtime_library_dirs=None, +- #export_symbols=None, extra_preargs=None, extra_postargs=None, +- #build_temp=None ++def st_link_shared_object(self, objects, output_libname, output_dir=None, ++ libraries=None, library_dirs=None, runtime_library_dirs=None, ++ export_symbols=None, debug=0, extra_preargs=None, ++ extra_postargs=None, build_temp=None, target_lang=None ++): ++ # XXX we need to either disallow these attrs on Library instances, ++ # or warn/abort here if set, or something... ++ #libraries=None, library_dirs=None, runtime_library_dirs=None, ++ #export_symbols=None, extra_preargs=None, extra_postargs=None, ++ #build_temp=None + +- assert output_dir is None # distutils build_ext doesn't pass this +- output_dir,filename = os.path.split(output_libname) +- basename, ext = os.path.splitext(filename) +- if self.library_filename("x").startswith('lib'): +- # strip 'lib' prefix; this is kludgy if some platform uses +- # a different prefix +- basename = basename[3:] ++ assert output_dir is None # distutils build_ext doesn't pass this ++ output_dir,filename = os.path.split(output_libname) ++ basename, ext = os.path.splitext(filename) ++ if self.library_filename("x").startswith('lib'): ++ # strip 'lib' prefix; this is kludgy if some platform uses ++ # a different prefix ++ basename = basename[3:] + +- self.create_static_lib( +- objects, basename, output_dir, debug, target_lang +- ) ++ self.create_static_lib(objects, basename, output_dir, debug, target_lang) + + ++if use_stubs or os.name=='nt': ++ # Build shared libraries ++ link_shared_object = sh_link_shared_object ++else: ++ # Build static libraries everywhere else (unless force_shared) ++ libtype = 'static' ++ link_shared_object = st_link_shared_object diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/patches/patch.43.0.6c7 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/patches/patch.43.0.6c7 Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,135 @@ +Index: setuptools/extension.py +=================================================================== +--- setuptools/extension.py (revision 66382) ++++ setuptools/extension.py (working copy) +@@ -28,6 +28,11 @@ + class Library(Extension): + """Just like a regular Extension, but built as a library instead""" + ++ def __init__(self, *args, **kwds): ++ self.force_shared = kwds.pop('force_shared', False) ++ Extension.__init__(self, *args, **kwds) ++ ++ + import sys, distutils.core, distutils.extension + distutils.core.Extension = Extension + distutils.extension.Extension = Extension +Index: setuptools/command/build_ext.py +=================================================================== +--- setuptools/command/build_ext.py (revision 66382) ++++ setuptools/command/build_ext.py (working copy) +@@ -84,8 +84,12 @@ + filename = _build_ext.get_ext_filename(self,fullname) + ext = self.ext_map[fullname] + if isinstance(ext,Library): ++ if ext.force_shared and not use_stubs: ++ _libtype = 'shared' ++ else: ++ _libtype = libtype + fn, ext = os.path.splitext(filename) +- return self.shlib_compiler.library_filename(fn,libtype) ++ return self.shlib_compiler.library_filename(fn,_libtype) + elif use_stubs and ext._links_to_dynamic: + d,fn = os.path.split(filename) + return os.path.join(d,'dl-'+fn) +@@ -170,14 +174,22 @@ + def build_extension(self, ext): + _compiler = self.compiler + try: ++ force_shared = False + if isinstance(ext,Library): + self.compiler = self.shlib_compiler ++ force_shared = ext.force_shared and not use_stubs ++ if force_shared: ++ self.compiler.link_shared_object = \ ++ sh_link_shared_object.__get__(self.compiler) + _build_ext.build_extension(self,ext) + if ext._needs_stub: + self.write_stub( + self.get_finalized_command('build_py').build_lib, ext + ) + finally: ++ if force_shared: ++ self.compiler.link_shared_object = \ ++ link_shared_object.__get__(self.compiler) + self.compiler = _compiler + + def links_to_dynamic(self, ext): +@@ -244,44 +256,41 @@ + os.unlink(stub_file) + + +-if use_stubs or os.name=='nt': +- # Build shared libraries +- # +- def link_shared_object(self, objects, output_libname, output_dir=None, +- libraries=None, library_dirs=None, runtime_library_dirs=None, +- export_symbols=None, debug=0, extra_preargs=None, +- extra_postargs=None, build_temp=None, target_lang=None +- ): self.link( +- self.SHARED_LIBRARY, objects, output_libname, +- output_dir, libraries, library_dirs, runtime_library_dirs, +- export_symbols, debug, extra_preargs, extra_postargs, +- build_temp, target_lang +- ) +-else: +- # Build static libraries everywhere else +- libtype = 'static' ++def sh_link_shared_object(self, objects, output_libname, output_dir=None, ++ libraries=None, library_dirs=None, runtime_library_dirs=None, ++ export_symbols=None, debug=0, extra_preargs=None, ++ extra_postargs=None, build_temp=None, target_lang=None ++): self.link(self.SHARED_LIBRARY, objects, output_libname, ++ output_dir, libraries, library_dirs, runtime_library_dirs, ++ export_symbols, debug, extra_preargs, extra_postargs, ++ build_temp, target_lang) + +- def link_shared_object(self, objects, output_libname, output_dir=None, +- libraries=None, library_dirs=None, runtime_library_dirs=None, +- export_symbols=None, debug=0, extra_preargs=None, +- extra_postargs=None, build_temp=None, target_lang=None +- ): +- # XXX we need to either disallow these attrs on Library instances, +- # or warn/abort here if set, or something... +- #libraries=None, library_dirs=None, runtime_library_dirs=None, +- #export_symbols=None, extra_preargs=None, extra_postargs=None, +- #build_temp=None ++def st_link_shared_object(self, objects, output_libname, output_dir=None, ++ libraries=None, library_dirs=None, runtime_library_dirs=None, ++ export_symbols=None, debug=0, extra_preargs=None, ++ extra_postargs=None, build_temp=None, target_lang=None ++): ++ # XXX we need to either disallow these attrs on Library instances, ++ # or warn/abort here if set, or something... ++ #libraries=None, library_dirs=None, runtime_library_dirs=None, ++ #export_symbols=None, extra_preargs=None, extra_postargs=None, ++ #build_temp=None + +- assert output_dir is None # distutils build_ext doesn't pass this +- output_dir,filename = os.path.split(output_libname) +- basename, ext = os.path.splitext(filename) +- if self.library_filename("x").startswith('lib'): +- # strip 'lib' prefix; this is kludgy if some platform uses +- # a different prefix +- basename = basename[3:] ++ assert output_dir is None # distutils build_ext doesn't pass this ++ output_dir,filename = os.path.split(output_libname) ++ basename, ext = os.path.splitext(filename) ++ if self.library_filename("x").startswith('lib'): ++ # strip 'lib' prefix; this is kludgy if some platform uses ++ # a different prefix ++ basename = basename[3:] + +- self.create_static_lib( +- objects, basename, output_dir, debug, target_lang +- ) ++ self.create_static_lib(objects, basename, output_dir, debug, target_lang) + + ++if use_stubs or os.name=='nt': ++ # Build shared libraries ++ link_shared_object = sh_link_shared_object ++else: ++ # Build static libraries everywhere else (unless force_shared) ++ libtype = 'static' ++ link_shared_object = st_link_shared_object diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/python.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/python.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,1625 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import os, sys, platform, shutil, _jcc + +from cpp import PRIMITIVES, INDENT, HALF_INDENT +from cpp import cppname, cppnames, typename +from cpp import line, signature, find_method, split_pkg, sort +from cpp import Modifier, Class, Method +from _jcc import findClass +from config import INCLUDES, CFLAGS, DEBUG_CFLAGS, LFLAGS, SHARED + +try: + from cpp import ParameterizedType, TypeVariable +except ImportError: + pass + +python_ver = '%d.%d.%d' %(sys.version_info[0:3]) +if python_ver < '2.4': + from sets import Set as set + + +RESULTS = { 'boolean': 'Py_RETURN_BOOL(%s);', + 'byte': 'return PyInt_FromLong(%s);', + 'char': 'return PyUnicode_FromUnicode((Py_UNICODE *) &%s, 1);', + 'double': 'return PyFloat_FromDouble((double) %s);', + 'float': 'return PyFloat_FromDouble((double) %s);', + 'int': 'return PyInt_FromLong((long) %s);', + 'long': 'return PyLong_FromLongLong((PY_LONG_LONG) %s);', + 'short': 'return PyInt_FromLong((long) %s);', + 'java.lang.String': 'return j2p(%s);' } + +CALLARGS = { 'boolean': ('O', '(%s ? Py_True : Py_False)', False), + 'byte': ('O', 'PyInt_FromLong(%s)', True), + 'char': ('O', 'PyUnicode_FromUnicode((Py_UNICODE *) &%s, 1)', True), + 'double': ('d', '(double) %s', False), + 'float': ('f', '(float) %s', False), + 'int': ('i', '(int) %s', False), + 'long': ('L', '(long long) %s', False), + 'short': ('i', '(int) %s', False), + 'java.lang.String': ('O', 'env->fromJString((jstring) %s, 0)', True) } + + +def parseArgs(params, current, generics): + + def signature(cls): + array = '' + while cls.isArray(): + array += '[' + cls = cls.getComponentType() + clsName = cls.getName() + if cls.isPrimitive(): + return array + PRIMITIVES[clsName] + if clsName == 'java.lang.String': + return array + 's' + if clsName == 'java.lang.Object': + return array + 'o' + if generics and cls.getTypeParameters(): + return array + 'K' + else: + return array + 'k' + + def checkarg(cls): + while cls.isArray(): + cls = cls.getComponentType() + if (cls.isPrimitive() or + cls.getName() in ('java.lang.String', 'java.lang.Object')): + return '' + return ', %s::initializeClass' %(typename(cls, current, False)) + + def callarg(cls, i): + if generics: + while cls.isArray(): + cls = cls.getComponentType() + if cls.getTypeParameters(): + ns, sep, n = rpartition(typename(cls, current, False), '::') + return ', &a%d, &p%d, %s%st_%s::parameters_' %(i, i, ns, sep, n) + return ', &a%d' %(i) + + return (''.join([signature(param) for param in params]), + ''.join([checkarg(param) for param in params]), + ''.join([callarg(params[i], i) for i in xrange(len(params))])) + + +def declareVars(out, indent, params, current, generics, typeParams): + + for i in xrange(len(params)): + param = params[i] + line(out, indent, '%s a%d%s;', + typename(param, current, False), i, + not param.isPrimitive() and '((jobject) NULL)' or '') + if generics: + while param.isArray(): + param = param.getComponentType() + if param.getTypeParameters(): + line(out, indent, 'PyTypeObject **p%d;', i) + typeParams.add(i) + + +def construct(out, indent, cls, inCase, constructor, names, generics): + + if inCase: + line(out, indent, '{') + indent += 1 + + params = constructor.getParameterTypes() + if generics: + typeParams = set() + else: + typeParams = None + + count = len(params) + + declareVars(out, indent, params, cls, generics, typeParams) + line(out, indent, '%s object((jobject) NULL);', cppname(names[-1])) + + line(out) + if count: + line(out, indent, 'if (!parseArgs(args, "%s"%s%s))', + *parseArgs(params, cls, generics)) + line(out, indent, '{') + indent += 1 + + line(out, indent, 'INT_CALL(object = %s(%s));', + cppname(names[-1]), ', '.join(['a%d' %(i) for i in xrange(count)])) + line(out, indent, 'self->object = object;') + if inCase: + line(out, indent, 'break;') + + if count: + indent -= 1 + line(out, indent, '}') + + if inCase: + indent -= 1 + line(out, indent, '}') + + +def rpartition(string, sep): + + if python_ver >= '2.5.0': + return string.rpartition(sep) + else: + parts = split_pkg(string, sep) + if len(parts) == 1: + return ('', '', parts[0]) + return (parts[0], sep, parts[1]) + + +def fieldValue(cls, value, fieldType): + + if fieldType.isArray(): + fieldType = fieldType.getComponentType() + if fieldType.isArray(): + result = 'JArray(%s->this$).wrap(NULL)' + elif fieldType.isPrimitive(): + result = '%s->wrap()' + elif fieldType.getName() == 'java.lang.String': + result = 'JArray(%s->this$).wrap()' + else: + parts = rpartition(typename(fieldType, cls, False), '::') + result = 'JArray(%%s->this$).wrap(%s%st_%s::wrap_jobject)' %(parts) + + elif fieldType.getName() == 'java.lang.String': + result = 'j2p(*%s)' + + elif not fieldType.isPrimitive(): + parts = rpartition(typename(fieldType, cls, False), '::') + result = '%s%st_%s::wrap_Object(*%%s)' %(parts) + + else: + return value + + return result %(value) + + +def returnValue(cls, returnType, value, genericRT=None, typeParams=None): + + result = RESULTS.get(returnType.getName()) + if result: + return result %(value) + + if returnType.isArray(): + returnType = returnType.getComponentType() + depth = 1 + while returnType.isArray(): + returnType = returnType.getComponentType() + depth += 1 + if depth > 1: + return 'return JArray(%s.this$).wrap(NULL);' %(value) + elif returnType.isPrimitive(): + return 'return %s.wrap();' %(value) + elif returnType.getName() == 'java.lang.String': + return 'return JArray(%s.this$).wrap();' %(value) + + ns, sep, n = rpartition(typename(returnType, cls, False), '::') + return 'return JArray(%s.this$).wrap(%s%st_%s::wrap_jobject);' %(value, ns, sep, n) + + ns, sep, n = rpartition(typename(returnType, cls, False), '::') + if genericRT is not None: + if ParameterizedType.instance_(genericRT): + genericRT = ParameterizedType.cast_(genericRT) + clsArgs = [] + for clsArg in genericRT.getActualTypeArguments(): + if Class.instance_(clsArg): + clsNames = Class.cast_(clsArg).getName().split('.') + clsArg = '&%s::%s$$Type' %('::'.join(cppnames(clsNames[:-1])), cppname(clsNames[-1])) + clsArgs.append(clsArg) + elif TypeVariable.instance_(clsArg): + gd = TypeVariable.cast_(clsArg).getGenericDeclaration() + if Class.instance_(gd): + i = 0 + for clsParam in gd.getTypeParameters(): + if clsArg == clsParam: + clsArgs.append('self->parameters[%d]' %(i)) + break + i += 1 + else: + break + else: + break + else: + break + else: + return 'return %s%st_%s::wrap_Object(%s, %s);' %(ns, sep, n, value, ', '.join(clsArgs)) + elif TypeVariable.instance_(genericRT): + gd = TypeVariable.cast_(genericRT).getGenericDeclaration() + i = 0 + if Class.instance_(gd): + for clsParam in gd.getTypeParameters(): + if genericRT == clsParam: + return 'return self->parameters[%d] != NULL ? wrapType(self->parameters[%d], %s.this$) : %s%st_%s::wrap_Object(%s);' %(i, i, value, ns, sep, n, value) + i += 1 + elif Method.instance_(gd): + for clsParam in gd.getTypeParameters(): + if genericRT == clsParam and i in typeParams: + return 'return p%d != NULL && p%d[0] != NULL ? wrapType(p%d[0], %s.this$) : %s%st_%s::wrap_Object(%s);' %(i, i, i, value, ns, sep, n, value) + i += 1 + + return 'return %s%st_%s::wrap_Object(%s);' %(ns, sep, n, value) + + +def call(out, indent, cls, inCase, method, names, cardinality, isExtension, + generics): + + if inCase: + line(out, indent, '{') + indent += 1 + + name = method.getName() + modifiers = method.getModifiers() + params = method.getParameterTypes() + returnType = method.getReturnType() + if generics: + genericRT = method.getGenericReturnType() + typeParams = set() + else: + genericRT = None + typeParams = None + count = len(params) + + declareVars(out, indent, params, cls, generics, typeParams) + + returnName = returnType.getName() + if returnName != 'void': + line(out, indent, '%s result%s;', + typename(returnType, cls, False), + not returnType.isPrimitive() and '((jobject) NULL)' or '') + result = 'result = ' + else: + result = '' + + if cardinality and (count or not inCase): + s = cardinality > 1 and 's' or '' + line(out) + if isExtension and name == 'clone' and Modifier.isNative(modifiers): + line(out, indent, 'if (arg)') + else: + line(out, indent, 'if (!parseArg%s(arg%s, "%s"%s%s))', + s, s, *parseArgs(params, cls, generics)) + line(out, indent, '{') + indent += 1 + + name = cppname(name) + if Modifier.isStatic(modifiers): + line(out, indent, 'OBJ_CALL(%s%s::%s(%s));', + result, '::'.join(cppnames(names)), name, + ', '.join(['a%d' %(i) for i in xrange(count)])) + else: + line(out, indent, 'OBJ_CALL(%sself->object.%s(%s));', + result, name, ', '.join(['a%d' %(i) for i in xrange(count)])) + + if isExtension and name == 'clone' and Modifier.isNative(modifiers): + line(out) + line(out, indent, '%s object(result.this$);', typename(cls, cls, False)) + line(out, indent, 'if (PyObject_TypeCheck(arg, &FinalizerProxy$$Type) &&') + line(out, indent, ' PyObject_TypeCheck(((t_fp *) arg)->object, self->ob_type))') + line(out, indent, '{') + line(out, indent + 1, 'PyObject *_arg = ((t_fp *) arg)->object;') + line(out, indent + 1, '((t_JObject *) _arg)->object = object;') + line(out, indent + 1, 'Py_INCREF(_arg);') + line(out, indent + 1, 'object.pythonExtension((jlong) (Py_intptr_t) (void *) _arg);') + line(out, indent + 1, 'Py_INCREF(arg);') + line(out, indent + 1, 'return arg;') + line(out, indent, '}') + line(out, indent, 'return PyErr_SetArgsError("%s", arg);' %(name)) + elif returnName != 'void': + line(out, indent, returnValue(cls, returnType, 'result', + genericRT, typeParams)) + else: + line(out, indent, 'Py_RETURN_NONE;') + if cardinality and (count or not inCase): + indent -= 1 + line(out, indent, '}') + + if inCase: + indent -= 1 + line(out, indent, '}') + + +def methodargs(methods, superMethods): + + if len(methods) == 1 and methods[0].getName() not in superMethods: + count = len(methods[0].getParameterTypes()) + if count == 0: + return '', '', 0 + elif count == 1: + return ', PyObject *arg', ', arg', 1 + + return ', PyObject *args', ', args', 2 + + +def jniname(cls): + + if cls.isPrimitive(): + name = cls.getName() + if name != 'void': + name = 'j' + name + else: + name = 'jobject' + + return name + + +def jniargs(params): + + count = len(params) + decls = ', '.join(['%s a%d' %(jniname(params[i]), i) + for i in xrange(count)]) + if decls: + return ', ' + decls + + return '' + + +def extension(env, out, indent, cls, names, name, count, method, generics): + + line(out, indent, 'jlong ptr = jenv->CallLongMethod(jobj, %s::mids$[%s::mid_pythonExtension_%s]);', + cppname(names[-1]), cppname(names[-1]), env.strhash('()J')) + line(out, indent, 'PyObject *obj = (PyObject *) (Py_intptr_t) ptr;') + + if name == 'pythonDecRef': + line(out) + line(out, indent, 'if (obj != NULL)') + line(out, indent, '{') + line(out, indent + 1, 'jenv->CallVoidMethod(jobj, %s::mids$[%s::mid_pythonExtension_%s], (jlong) 0);', + cppname(names[-1]), cppname(names[-1]), env.strhash('(J)V')) + line(out, indent + 1, 'env->finalizeObject(jenv, obj);') + line(out, indent, '}') + return + + line(out, indent, 'PythonGIL gil(jenv);') + + returnType = method.getReturnType() + returnName = returnType.getName() + if returnName != 'void': + line(out, indent, '%s value%s;', + typename(returnType, cls, False), + not returnType.isPrimitive() and '((jobject) NULL)' or '') + + sigs = [] + decrefs = [] + args = [] + i = 0 + for param in method.getParameterTypes(): + typeName = param.getName() + if typeName in CALLARGS: + sig, code, decref = CALLARGS[typeName] + elif param.isArray(): + param = param.getComponentType() + if param.isPrimitive(): + code = 'JArray(%%s).wrap()' %(param.getName()) + elif param.isArray(): + code = 'JArray(%s).wrap(NULL)' + elif param.getName() == 'java.lang.String': + code = 'JArray(%s).wrap()' + else: + parts = rpartition(typename(param, cls, False), '::') + code = 'JArray(%%s).wrap(%s%st_%s::wrap_jobject)' %(parts) + sig, decref = 'O', True + elif param.getName() == 'java.lang.String': + sig, code, decref = 'O', 'j2p(%%s))', True + else: + parts = rpartition(typename(param, cls, False), '::') + sig, code, decref = 'O', '%s%st_%s::wrap_Object(%s%s%s(%%s))' %(parts*2), True + if sig == 'O': + line(out, indent, 'PyObject *o%d = %s;', i, code %('a%d' %(i))) + args.append('o%d' %(i)) + else: + args.append(code %('a%d' %(i))) + sigs.append(sig) + decrefs.append(decref) + i += 1 + + args = ', '.join(args) + if args: + args = ', ' + args + line(out, indent, 'PyObject *result = PyObject_CallMethod(obj, "%s", "%s"%s);', + name, ''.join(sigs), args) + i = 0 + for decref in decrefs: + if decref: + line(out, indent, 'Py_DECREF(o%d);', i) + i += 1 + line(out, indent, 'if (!result)') + line(out, indent + 1, 'throwPythonError();') + if returnName == 'void': + line(out, indent, 'else') + line(out, indent + 1, 'Py_DECREF(result);') + else: + signature, check, x = parseArgs([returnType], cls, False) + line(out, indent, 'else if (parseArg(result, "%s"%s, &value))', + signature, check) + line(out, indent, '{') + line(out, indent + 1, 'throwTypeError("%s", result);', name) + line(out, indent + 1, 'Py_DECREF(result);') + line(out, indent, '}') + line(out, indent, 'else') + line(out, indent, '{') + if not returnType.isPrimitive(): + line(out, indent + 1, 'jobj = jenv->NewLocalRef(value.this$);') + line(out, indent + 1, 'Py_DECREF(result);') + if returnType.isPrimitive(): + line(out, indent + 1, 'return value;') + else: + line(out, indent + 1, 'return jobj;') + line(out, indent, '}') + line(out) + if returnType.isPrimitive(): + line(out, indent, 'return (j%s) 0;', returnName) + else: + line(out, indent, 'return (jobject) NULL;') + + +def python(env, out_h, out, cls, superCls, names, superNames, + constructors, methods, protectedMethods, fields, instanceFields, + mapping, sequence, rename, declares, typeset, moduleName, generics): + + line(out_h) + line(out_h, 0, '#include ') + line(out_h) + + indent = 0 + for name in names[:-1]: + line(out_h, indent, 'namespace %s {', cppname(name)) + indent += 1 + line(out_h, indent, 'extern PyTypeObject %s$$Type;', names[-1]) + + if generics: + clsParams = cls.getTypeParameters() + else: + clsParams = None + + line(out_h) + line(out_h, indent, 'class t_%s {', names[-1]) + line(out_h, indent, 'public:') + line(out_h, indent + 1, 'PyObject_HEAD') + line(out_h, indent + 1, '%s object;', cppname(names[-1])) + if clsParams: + line(out_h, indent + 1, 'PyTypeObject *parameters[%d];', len(clsParams)) + line(out_h, indent + 1, 'static PyTypeObject **parameters_(t_%s *self)', + cppname(names[-1])) + line(out_h, indent + 1, '{') + line(out_h, indent + 2, 'return (PyTypeObject **) &(self->parameters);') + line(out_h, indent + 1, '}') + + line(out_h, indent + 1, 'static PyObject *wrap_Object(const %s&);', + cppname(names[-1])) + if clsParams: + line(out_h, indent + 1, 'static PyObject *wrap_Object(const %s&, %s);', + cppname(names[-1]), + ', '.join(['PyTypeObject *'] * len(clsParams))) + line(out_h, indent + 1, 'static PyObject *wrap_jobject(const jobject&);') + line(out_h, indent + 1, 'static void install(PyObject *module);') + line(out_h, indent + 1, 'static void initialize(PyObject *module);') + line(out_h, indent, '};') + + iterator = findClass('java/util/Iterator') + enumeration = findClass('java/util/Enumeration') + + while indent: + indent -= 1 + line(out_h, indent, '}') + + line(out) + line(out, 0, '#include "structmember.h"') + line(out, 0, '#include "functions.h"') + line(out, 0, '#include "macros.h"') + + for inner in cls.getDeclaredClasses(): + if inner in typeset and not inner in declares: + if Modifier.isStatic(inner.getModifiers()): + line(out, 0, '#include "%s.h"', + inner.getName().replace('.', '/')) + + for method in methods: + if method.getName() == 'pythonExtension': + isExtension = True + break + else: + isExtension = False + + line(out) + indent = 0 + for name in names[:-1]: + line(out, indent, 'namespace %s {', cppname(name)) + indent += 1 + + line(out, indent, 'static PyObject *t_%s_cast_(PyTypeObject *type, PyObject *arg);', names[-1]) + line(out, indent, 'static PyObject *t_%s_instance_(PyTypeObject *type, PyObject *arg);', names[-1]) + + if constructors: + line(out, indent, 'static int t_%s_init_(t_%s *self, PyObject *args, PyObject *kwds);', names[-1], names[-1]) + constructorName = 't_%s_init_' %(names[-1]) + else: + constructorName = 'abstract_init' + + if superCls: + superMethods = set([method.getName() + for method in superCls.getMethods()]) + else: + superMethods = () + + allMethods = {} + extMethods = {} + propMethods = {} + + if methods: + for method in methods: + modifiers = method.getModifiers() + name = method.getName() + params = method.getParameterTypes() + superMethod = None + isNative = Modifier.isNative(modifiers) + isStatic = Modifier.isStatic(modifiers) + + if (isExtension and not isStatic and superCls and isNative): + superMethod = find_method(superCls, name, params) + + if isExtension and isNative and not isStatic: + extMethods.setdefault(name, []).append(method) + + if superMethod or not (isExtension and isNative and not isStatic): + if isStatic: + if name in allMethods: + if Modifier.isStatic(allMethods[name][0].getModifiers()): + allMethods[name].append(method) + elif name + '_' in allMethods: + allMethods[name + '_'].append(method) + else: + print >>sys.stderr, " Warning: renaming static method '%s' on class %s to '%s_' since it is shadowed by non-static method of same name." %(name, '.'.join(names), name) + allMethods[name + '_'] = [method] + else: + allMethods[name] = [method] + else: + if name in allMethods: + if Modifier.isStatic(allMethods[name][0].getModifiers()): + print >>sys.stderr, " Warning: renaming static method '%s' on class %s to '%s_' since it is shadowed by non-static method of same name." %(name, '.'.join(names), name) + allMethods[name + '_'] = allMethods[name] + allMethods[name] = [method] + else: + allMethods[name].append(method) + else: + allMethods[name] = [method] + + if not (isExtension and isNative): + nameLen = len(name) + paramsLen = len(params) + if nameLen > 3 and paramsLen == 0 and name.startswith('get'): + propMethods.setdefault(name[3].lower() + name[4:], + []).append(method) + elif nameLen > 3 and paramsLen == 1 and name.startswith('set'): + propMethods.setdefault(name[3].lower() + name[4:], + []).append(method) + elif nameLen > 2 and paramsLen == 0 and name.startswith('is'): + propMethods.setdefault(name[2].lower() + name[3:], + []).append(method) + + properties = set([name for name in propMethods.iterkeys() + if name not in allMethods]) + propMethods = [(name, propMethods[name]) for name in properties] + sort(propMethods, key=lambda x: x[0]) + + extMethods = extMethods.items() + sort(extMethods, key=lambda x: x[0]) + allMethods = allMethods.items() + sort(allMethods, key=lambda x: x[0]) + + iteratorMethod = None + iteratorExt = False + nextMethod = None + nextExt = False + nextElementMethod = None + nextElementExt = False + + mappingMethod = None + if mapping: + mappingName, mappingSig = mapping.split(':') + + sequenceLenMethod = None + sequenceGetMethod = None + if sequence: + sequenceLenName, sequenceLenSig = sequence[0].split(':') + sequenceGetName, sequenceGetSig = sequence[1].split(':') + + for name, methods in allMethods: + args, x, cardinality = methodargs(methods, superMethods) + sort(methods, key=lambda x: len(x.getParameterTypes())) + method = methods[0] + modifiers = method.getModifiers() + if name == 'iterator' and iteratorMethod is None: + if (not method.getParameterTypes() and + iterator.isAssignableFrom(method.getReturnType())): + iteratorMethod = method + elif name == 'next' and nextMethod is None: + if (not method.getParameterTypes() and + not method.getReturnType().isPrimitive()): + nextMethod = method + elif name == 'nextElement' and nextElementMethod is None: + if (not method.getParameterTypes() and + not method.getReturnType().isPrimitive()): + nextElementMethod = method + elif mapping and name == mappingName and mappingMethod is None: + if signature(method) == mappingSig: + mappingMethod = (method, cardinality) + elif sequence and name == sequenceLenName and sequenceLenMethod is None: + if signature(method) == sequenceLenSig: + sequenceLenMethod = (method, cardinality) + elif sequence and name == sequenceGetName and sequenceGetMethod is None: + if signature(method) == sequenceGetSig: + sequenceGetMethod = (method, cardinality) + elif isExtension and name == 'clone' and Modifier.isNative(modifiers): + args, x, cardinality = ', PyObject *arg', ', arg', 1 + + if Modifier.isStatic(modifiers): + line(out, indent, 'static PyObject *t_%s_%s(PyTypeObject *type%s);', + names[-1], name, args) + else: + line(out, indent, 'static PyObject *t_%s_%s(t_%s *self%s);', + names[-1], name, names[-1], args) + + for name, methods in extMethods: + args, x, cardinality = methodargs(methods, superMethods) + sort(methods, key=lambda x: len(x.getParameterTypes())) + method = methods[0] + modifiers = method.getModifiers() + if name == 'iterator' and iteratorMethod is None: + if (not method.getParameterTypes() and + iterator.isAssignableFrom(method.getReturnType())): + iteratorMethod = method + iteratorExt = True + elif name == 'next' and nextMethod is None: + if (not method.getParameterTypes() and + not method.getReturnType().isPrimitive()): + nextMethod = method + nextExt = True + elif name == 'nextElement' and nextElementMethod is None: + if (not method.getParameterTypes() and + not method.getReturnType().isPrimitive()): + nextElementMethod = method + nextElementExt = True + + if isExtension: + count = 0 + for name, methods in extMethods: + for method in methods: + line(out, indent, + 'static %s JNICALL t_%s_%s%d(JNIEnv *jenv, jobject jobj%s);', + jniname(method.getReturnType()), names[-1], name, count, + jniargs(method.getParameterTypes())) + count += 1 + line(out, indent, 'static PyObject *t_%s_get__self(t_%s *self, void *data);', names[-1], names[-1]) + + if instanceFields: + for field in instanceFields: + fieldName = field.getName() + if fieldName not in properties: + line(out, indent, 'static PyObject *t_%s_get__%s(t_%s *self, void *data);', + names[-1], fieldName, names[-1]) + if not Modifier.isFinal(field.getModifiers()): + line(out, indent, 'static int t_%s_set__%s(t_%s *self, PyObject *arg, void *data);', + names[-1], field.getName(), names[-1]) + line(out) + + for fieldName, methods in propMethods: + getter = False + setter = False + for method in methods: + methodName = method.getName() + if not getter and (methodName.startswith('get') or + methodName.startswith('is')): + getter = True + line(out, indent, 'static PyObject *t_%s_get__%s(t_%s *self, void *data);', + names[-1], fieldName, names[-1]) + elif not setter and methodName.startswith('set'): + setter = True + line(out, indent, 'static int t_%s_set__%s(t_%s *self, PyObject *arg, void *data);', + names[-1], fieldName, names[-1]) + if clsParams: + line(out, indent, 'static PyObject *t_%s_get__parameters_(t_%s *self, void *data);', names[-1], names[-1]) + + if instanceFields or propMethods or isExtension or clsParams: + line(out, indent, 'static PyGetSetDef t_%s__fields_[] = {', names[-1]) + for field in instanceFields: + fieldName = field.getName() + if fieldName not in properties: + if Modifier.isFinal(field.getModifiers()): + line(out, indent + 1, 'DECLARE_GET_FIELD(t_%s, %s),', + names[-1], fieldName) + else: + line(out, indent + 1, 'DECLARE_GETSET_FIELD(t_%s, %s),', + names[-1], fieldName) + for fieldName, methods in propMethods: + getter = False + setter = False + for method in methods: + methodName = method.getName() + if not getter and (methodName.startswith('get') or + methodName.startswith('is')): + getter = True + elif not setter and methodName.startswith('set'): + setter = True + if getter and setter: + op = 'GETSET' + elif getter: + op = 'GET' + elif setter: + op = 'SET' + line(out, indent + 1, 'DECLARE_%s_FIELD(t_%s, %s),', + op, names[-1], fieldName) + if isExtension: + line(out, indent + 1, 'DECLARE_GET_FIELD(t_%s, self),', names[-1]) + if clsParams: + line(out, indent + 1, 'DECLARE_GET_FIELD(t_%s, parameters_),', + names[-1]) + + line(out, indent + 1, '{ NULL, NULL, NULL, NULL, NULL }') + line(out, indent, '};') + + line(out) + line(out, indent, 'static PyMethodDef t_%s__methods_[] = {', names[-1]) + + line(out, indent + 1, + 'DECLARE_METHOD(t_%s, cast_, METH_O | METH_CLASS),', names[-1]) + line(out, indent + 1, + 'DECLARE_METHOD(t_%s, instance_, METH_O | METH_CLASS),', names[-1]) + + for name, methods in allMethods: + modifiers = methods[0].getModifiers() + if len(methods) == 1 and not name in superMethods: + count = len(methods[0].getParameterTypes()) + if count == 0: + args = 'METH_NOARGS' + elif count == 1: + args = 'METH_O' + else: + args = 'METH_VARARGS' + elif isExtension and name == 'clone' and Modifier.isNative(modifiers): + args = 'METH_O' + else: + args = 'METH_VARARGS' + if Modifier.isStatic(modifiers): + args += ' | METH_CLASS' + + line(out, indent + 1, 'DECLARE_METHOD(t_%s, %s, %s),', + names[-1], name, args) + line(out, indent + 1, '{ NULL, NULL, 0, NULL }') + line(out, indent, '};') + + if instanceFields or propMethods or isExtension or clsParams: + tp_getset = 't_%s__fields_' %(names[-1]) + else: + tp_getset = '0' + + if iteratorMethod: + if iteratorExt: + tp_iter = 'get_extension_iterator' + else: + tp_iter = '((PyObject *(*)(t_%s *)) get_%siterator)' %(names[-1], clsParams and 'generic_' or '', names[-1]) + tp_iternext = '0' + elif nextMethod and iterator.isAssignableFrom(cls): + tp_iter = 'PyObject_SelfIter' + returnName = typename(nextMethod.getReturnType(), cls, False) + ns, sep, n = rpartition(returnName, '::') + if nextExt: + tp_iternext = 'get_extension_next' + else: + tp_iternext = '((PyObject *(*)(java::util::t_Iterator *)) get_%siterator_next)' %(clsParams and 'generic_' or '', ns, sep, n) + elif nextElementMethod and enumeration.isAssignableFrom(cls): + tp_iter = 'PyObject_SelfIter' + returnName = typename(nextElementMethod.getReturnType(), cls, False) + ns, sep, n = rpartition(returnName, '::') + if nextElementExt: + tp_iternext = 'get_extension_nextElement' + else: + tp_iternext = '((PyObject *(*)(java::util::t_Enumeration *)) get_%senumeration_next)' %(clsParams and 'generic_' or '', ns, sep, n) + elif nextMethod: + tp_iter = 'PyObject_SelfIter' + returnName = typename(nextMethod.getReturnType(), cls, False) + ns, sep, n = rpartition(returnName, '::') + if nextExt: + tp_iternext = 'get_extension_next' + else: + tp_iternext = '((PyObject *(*)(t_%s *)) get_%snext)' %(names[-1], clsParams and 'generic_' or '', names[-1], ns, sep, n, returnName) + else: + tp_iter = '0' + tp_iternext = '0' + + if mappingMethod: + method, cardinality = mappingMethod + if cardinality > 1: + getName = 't_%s_%s_map_' %(names[-1], method.getName()) + line(out, indent, 'static PyObject *%s(t_%s *self, PyObject *key);', + getName, names[-1]) + else: + getName = 't_%s_%s' %(names[-1], method.getName()) + line(out) + line(out, indent, 'static PyMappingMethods t_%s_as_mapping = {', + names[-1]) + line(out, indent + 1, '0,') + line(out, indent + 1, '(binaryfunc) %s,', getName) + line(out, indent + 1, '0,') + line(out, indent, '};') + tp_as_mapping = '&t_%s_as_mapping' %(names[-1]) + else: + tp_as_mapping = '0' + + if sequenceLenMethod or sequenceGetMethod: + if sequenceLenMethod: + method, cardinality = sequenceLenMethod + lenName = 't_%s_%s_seq_' %(names[-1], method.getName()) + line(out, indent, 'static int %s(t_%s *self);', lenName, names[-1]) + else: + lenName = '0' + + if sequenceGetMethod: + method, cardinality = sequenceGetMethod + getName = 't_%s_%s_seq_' %(names[-1], method.getName()) + line(out, indent, 'static PyObject *%s(t_%s *self, int n);', + getName, names[-1]) + else: + getName = '0' + + line(out) + line(out, indent, 'static PySequenceMethods t_%s_as_sequence = {', + names[-1]) + if python_ver < '2.5.0': + line(out, indent + 1, '(inquiry) %s,', lenName) + line(out, indent + 1, '0,') + line(out, indent + 1, '0,') + line(out, indent + 1, '(intargfunc) %s', getName) + line(out, indent, '};') + else: + line(out, indent + 1, '(lenfunc) %s,', lenName) + line(out, indent + 1, '0,') + line(out, indent + 1, '0,') + line(out, indent + 1, '(ssizeargfunc) %s', getName) + line(out, indent, '};') + tp_as_sequence = '&t_%s_as_sequence' %(names[-1]) + else: + tp_as_sequence = '0' + + if len(superNames) > 1: + base = '::'.join(('::'.join(cppnames(superNames[:-1])), superNames[-1])) + else: + base = superNames[-1] + line(out) + line(out, indent, 'DECLARE_TYPE(%s, t_%s, %s, %s, %s, %s, %s, %s, %s, %s);', + names[-1], names[-1], base, cppname(names[-1]), constructorName, + tp_iter, tp_iternext, tp_getset, tp_as_mapping, tp_as_sequence) + + if clsParams: + clsArgs = [] + for clsParam in clsParams: + clsArgs.append("PyTypeObject *%s" %(clsParam.getName())) + line(out, indent, + "PyObject *t_%s::wrap_Object(const %s& object, %s)", + cppname(names[-1]), names[-1], ', '.join(clsArgs)) + line(out, indent, "{") + line(out, indent + 1, "PyObject *obj = t_%s::wrap_Object(object);", + names[-1]) + line(out, indent + 1, "if (obj != Py_None)") + line(out, indent + 1, "{") + line(out, indent + 2, "t_%s *self = (t_%s *) obj;", + names[-1], names[-1]) + i = 0; + for clsParam in clsParams: + line(out, indent + 2, "self->parameters[%d] = %s;", + i, clsParam.getName()) + line(out, indent + 1, "}") + line(out, indent + 1, "return obj;"); + line(out, indent, "}") + + line(out) + line(out, indent, 'void t_%s::install(PyObject *module)', names[-1]) + line(out, indent, '{') + line(out, indent + 1, 'installType(&%s$$Type, module, "%s", %d);', + names[-1], rename or names[-1], isExtension and 1 or 0) + for inner in cls.getDeclaredClasses(): + if inner in typeset: + if Modifier.isStatic(inner.getModifiers()): + innerName = inner.getName().split('.')[-1] + line(out, indent + 1, 'PyDict_SetItemString(%s$$Type.tp_dict, "%s", make_descriptor(&%s$$Type));', + names[-1], innerName[len(names[-1])+1:], innerName) + line(out, indent, '}') + + line(out) + line(out, indent, 'void t_%s::initialize(PyObject *module)', names[-1]) + line(out, indent, '{') + line(out, indent + 1, 'PyDict_SetItemString(%s$$Type.tp_dict, "class_", make_descriptor(%s::initializeClass, %s));', + names[-1], cppname(names[-1]), generics and 1 or 0) + line(out, indent + 1, 'PyDict_SetItemString(%s$$Type.tp_dict, "wrapfn_", make_descriptor(t_%s::wrap_jobject));', + names[-1], names[-1]) + + if isExtension: + line(out, indent + 1, 'jclass cls = %s::initializeClass();', + cppname(names[-1])) + elif fields: + line(out, indent + 1, '%s::initializeClass();', cppname(names[-1])) + + if isExtension: + count = 0 + line(out, indent + 1, 'JNINativeMethod methods[] = {') + for name, methods in extMethods: + for method in methods: + line(out, indent + 2, '{ "%s", "%s", (void *) t_%s_%s%d },', + name, signature(method), names[-1], name, count) + count += 1 + line(out, indent + 1, '};') + line(out, indent + 1, 'env->registerNatives(cls, methods, %d);', + count) + + for field in fields: + fieldType = field.getType() + fieldName = field.getName() + value = '%s::%s' %(cppname(names[-1]), cppname(fieldName)) + value = fieldValue(cls, value, fieldType) + line(out, indent + 1, 'PyDict_SetItemString(%s$$Type.tp_dict, "%s", make_descriptor(%s));', + names[-1], fieldName, value) + line(out, indent, '}') + + line(out) + line(out, indent, 'static PyObject *t_%s_cast_(PyTypeObject *type, PyObject *arg)', names[-1]) + line(out, indent, '{') + line(out, indent + 1, 'if (!(arg = castCheck(arg, %s::initializeClass, 1)))', cppname(names[-1])) + line(out, indent + 2, 'return NULL;') + line(out, indent + 1, 'return t_%s::wrap_Object(%s(((t_%s *) arg)->object.this$));', names[-1], cppname(names[-1]), names[-1]) + line(out, indent, '}') + + line(out, indent, 'static PyObject *t_%s_instance_(PyTypeObject *type, PyObject *arg)', names[-1]) + line(out, indent, '{') + line(out, indent + 1, 'if (!castCheck(arg, %s::initializeClass, 0))', cppname(names[-1])) + line(out, indent + 2, 'Py_RETURN_FALSE;') + line(out, indent + 1, 'Py_RETURN_TRUE;') + line(out, indent, '}') + + if constructors: + line(out) + line(out, indent, 'static int t_%s_init_(t_%s *self, PyObject *args, PyObject *kwds)', names[-1], names[-1]) + line(out, indent, '{') + if len(constructors) > 1: + currLen = -1 + line(out, indent + 1, 'switch (PyTuple_GET_SIZE(args)) {') + withErr = False + for constructor in constructors: + params = constructor.getParameterTypes() + if len(params) != currLen: + if currLen >= 0: + withErr = True + line(out, indent + 2, 'goto err;') + currLen = len(params) + line(out, indent + 1, '%scase %d:', HALF_INDENT, currLen) + construct(out, indent + 2, cls, True, constructor, names, + generics) + line(out, indent + 1, '%sdefault:', HALF_INDENT) + if withErr: + line(out, indent + 1, '%serr:', HALF_INDENT) + line(out, indent + 2, 'PyErr_SetArgsError((PyObject *) self, "__init__", args);') + line(out, indent + 2, 'return -1;') + line(out, indent + 1, '}') + else: + construct(out, indent + 1, cls, False, constructors[0], names, + generics) + if constructors[0].getParameterTypes(): + line(out, indent + 1, 'else') + line(out, indent + 1, '{') + line(out, indent + 2, 'PyErr_SetArgsError((PyObject *) self, "__init__", args);') + line(out, indent + 2, 'return -1;') + line(out, indent + 1, '}') + + if isExtension: + line(out) + line(out, indent + 1, 'Py_INCREF((PyObject *) self);') + line(out, indent + 1, 'self->object.pythonExtension((jlong) (Py_intptr_t) (void *) self);') + + line(out) + line(out, indent + 1, 'return 0;') + line(out, indent , '}') + + for name, methods in allMethods: + line(out) + modifiers = methods[0].getModifiers() + + if isExtension and name == 'clone' and Modifier.isNative(modifiers): + declargs, args, cardinality = ', PyObject *arg', ', arg', 1 + else: + declargs, args, cardinality = methodargs(methods, superMethods) + + static = Modifier.isStatic(modifiers) + if static: + line(out, indent, 'static PyObject *t_%s_%s(PyTypeObject *type%s)', + names[-1], name, declargs) + else: + line(out, indent, 'static PyObject *t_%s_%s(t_%s *self%s)', + names[-1], name, names[-1], declargs) + + line(out, indent, '{') + if len(methods) > 1: + currLen = -1 + line(out, indent + 1, 'switch (PyTuple_GET_SIZE(args)) {') + for method in methods: + params = method.getParameterTypes() + if len(params) != currLen: + if currLen >= 0: + line(out, indent + 2, 'break;') + currLen = len(params) + line(out, indent + 1, '%scase %d:', HALF_INDENT, currLen) + call(out, indent + 2, cls, True, method, names, cardinality, + isExtension, generics) + line(out, indent + 1, '}') + else: + call(out, indent + 1, cls, False, methods[0], names, cardinality, + isExtension, generics) + + if args: + line(out) + if name in superMethods: + if static: + line(out, indent + 1, 'return callSuper(type, "%s"%s, %d);', + name, args, cardinality) + else: + line(out, indent + 1, 'return callSuper(&%s$$Type, (PyObject *) self, "%s"%s, %d);', + names[-1], name, args, cardinality) + else: + line(out, indent + 1, 'PyErr_SetArgsError(%s, "%s"%s);', + static and 'type' or '(PyObject *) self', name, args) + line(out, indent + 1, 'return NULL;') + + line(out, indent, '}') + + if isExtension: + count = 0 + for name, methods in extMethods: + for method in methods: + line(out) + line(out, indent, + 'static %s JNICALL t_%s_%s%d(JNIEnv *jenv, jobject jobj%s)', + jniname(method.getReturnType()), names[-1], name, count, + jniargs(method.getParameterTypes())) + count += 1 + line(out, indent, '{') + extension(env, out, indent + 1, cls, names, name, count, method, + generics) + line(out, indent, '}') + line(out) + line(out, indent, 'static PyObject *t_%s_get__self(t_%s *self, void *data)', + names[-1], names[-1]) + line(out, indent, '{') + indent += 1 + line(out, indent, 'jlong ptr;') + line(out, indent, 'OBJ_CALL(ptr = self->object.pythonExtension());') + line(out, indent, 'PyObject *obj = (PyObject *) (Py_intptr_t) ptr;') + line(out) + line(out, indent, 'if (obj != NULL)') + line(out, indent, '{') + line(out, indent + 1, 'Py_INCREF(obj);') + line(out, indent + 1, 'return obj;') + line(out, indent, '}') + line(out, indent, 'else') + line(out, indent + 1, 'Py_RETURN_NONE;') + indent -= 1 + line(out, indent, '}') + + if clsParams: + line(out, indent, 'static PyObject *t_%s_get__parameters_(t_%s *self, void *data)', names[-1], names[-1]) + line(out, indent, '{') + line(out, indent + 1, 'return typeParameters(self->parameters, sizeof(self->parameters));') + line(out, indent, '}') + + if instanceFields: + for field in instanceFields: + fieldName = field.getName() + if fieldName not in properties: + line(out) + fieldType = field.getType() + typeName = typename(fieldType, cls, False) + line(out, indent, 'static PyObject *t_%s_get__%s(t_%s *self, void *data)', + names[-1], fieldName, names[-1]) + line(out, indent, '{') + line(out, indent + 1, '%s value%s;', typeName, + not fieldType.isPrimitive() and '((jobject) NULL)' or '') + line(out, indent + 1, 'OBJ_CALL(value = self->object._get_%s());', + fieldName) + line(out, indent + 1, returnValue(cls, fieldType, 'value')) + line(out, indent, '}') + + if not Modifier.isFinal(field.getModifiers()): + line(out, indent, 'static int t_%s_set__%s(t_%s *self, PyObject *arg, void *data)', + names[-1], fieldName, names[-1]) + line(out, indent, '{') + line(out, indent + 1, '%s value%s;', typeName, + not fieldType.isPrimitive() and '((jobject) NULL)' or '') + sig, check, x = parseArgs([fieldType], cls, False) + line(out, indent + 1, 'if (!parseArg(arg, "%s"%s, &value))', + sig, check) + line(out, indent + 1, '{') + line(out, indent + 2, 'INT_CALL(self->object._set_%s(value));', + fieldName) + line(out, indent + 2, 'return 0;') + line(out, indent + 1, '}') + line(out, indent + 1, 'PyErr_SetArgsError((PyObject *) self, "%s", arg);', + fieldName) + line(out, indent + 1, 'return -1;') + line(out, indent, '}') + + if propMethods: + for fieldName, methods in propMethods: + line(out) + getter = None + setters = [] + sort(methods, key=lambda x: x.getName()) + for method in methods: + methodName = method.getName() + if not getter and (methodName.startswith('get') or + methodName.startswith('is')): + getter = method + elif methodName.startswith('set'): + setters.append(method) + + if getter: + methodName = getter.getName() + returnType = getter.getReturnType() + typeName = typename(returnType, cls, False) + line(out, indent, 'static PyObject *t_%s_get__%s(t_%s *self, void *data)', + names[-1], fieldName, names[-1]) + line(out, indent, '{') + line(out, indent + 1, '%s value%s;', typeName, + not returnType.isPrimitive() and '((jobject) NULL)' or '') + line(out, indent + 1, 'OBJ_CALL(value = self->object.%s());', + methodName) + line(out, indent + 1, returnValue(cls, returnType, 'value')) + line(out, indent, '}') + + if setters: + line(out, indent, 'static int t_%s_set__%s(t_%s *self, PyObject *arg, void *data)', + names[-1], fieldName, names[-1]) + line(out, indent, '{') + methodName = setters[0].getName() + for method in setters: + argType = method.getParameterTypes()[0] + typeName = typename(argType, cls, False) + line(out, indent + 1, '{') + line(out, indent + 2, '%s value%s;', typeName, + not argType.isPrimitive() and '((jobject) NULL)' or '') + sig, check, x = parseArgs([argType], cls, False) + line(out, indent + 2, 'if (!parseArg(arg, "%s"%s, &value))', + sig, check) + line(out, indent + 2, '{') + line(out, indent + 3, 'INT_CALL(self->object.%s(value));', + methodName) + line(out, indent + 3, 'return 0;') + line(out, indent + 2, '}') + line(out, indent + 1, '}') + line(out, indent + 1, 'PyErr_SetArgsError((PyObject *) self, "%s", arg);', + fieldName) + line(out, indent + 1, 'return -1;') + line(out, indent, '}') + + if mappingMethod: + method, cardinality = mappingMethod + if cardinality > 1: + methodName = method.getName() + getName = 't_%s_%s_map_' %(names[-1], methodName) + line(out) + line(out, indent, 'static PyObject *%s(t_%s *self, PyObject *arg)', + getName, names[-1]) + line(out, indent, '{') + call(out, indent + 1, cls, False, method, names, 1, isExtension, + generics) + line(out) + line(out, indent + 1, 'PyErr_SetArgsError((PyObject *) self, "%s", arg);', + methodName) + line(out, indent + 1, 'return NULL;') + line(out, indent, '}') + + if sequenceLenMethod: + method, cardinality = sequenceLenMethod + methodName = method.getName() + lenName = 't_%s_%s_seq_' %(names[-1], methodName) + line(out) + line(out, indent, 'static int %s(t_%s *self)', lenName, names[-1]) + line(out, indent, '{') + line(out, indent + 1, '%s len;', + typename(method.getReturnType(), cls, False)) + line(out, indent + 1, 'INT_CALL(len = self->object.%s());', methodName) + line(out, indent + 1, 'return (int) len;') + line(out, indent, '}') + + if sequenceGetMethod: + method, cardinality = sequenceGetMethod + methodName = method.getName() + returnType = method.getReturnType() + getName = 't_%s_%s_seq_' %(names[-1], methodName) + line(out) + line(out, indent, 'static PyObject *%s(t_%s *self, int n)', getName, names[-1]) + line(out, indent, '{') + line(out, indent + 1, '%s result%s;', + typename(returnType, cls, False), + not returnType.isPrimitive() and '((jobject) NULL)' or '') + line(out, indent + 1, 'OBJ_CALL(result = self->object.%s((%s) n));', + methodName, typename(method.getParameterTypes()[0], cls, False)) + line(out, indent + 1, returnValue(cls, returnType, 'result')) + line(out, indent, '}') + + while indent: + indent -= 1 + line(out, indent, '}') + + +def package(out, allInOne, cppdir, namespace, names): + + if not allInOne: + out = file(os.path.join(os.path.join(cppdir, *names), + '__init__.cpp'), 'w') + + if allInOne and not names or not allInOne: + line(out, 0, '#include ') + line(out, 0, '#include ') + line(out, 0, '#include "JCCEnv.h"') + line(out, 0, '#include "functions.h"') + + if not names: + line(out) + line(out, 0, 'PyObject *initVM(PyObject *module, PyObject *args, PyObject *kwds);') + + packages = [] + types = [] + + namespaces = namespace.items() + sort(namespaces, key=lambda x: x[0]) + for name, entries in namespaces: + if entries is True: + if names: + line(out, 0, '#include "%s/%s.h"', '/'.join(names), name) + else: + line(out, 0, '#include "%s.h"', name) + types.append(name) + else: + packages.append((name, entries)) + + indent = 0 + if names: + line(out) + for name in names: + line(out, indent, 'namespace %s {', cppname(name)) + indent += 1 + + line(out); + for name, entries in packages: + line(out, indent, 'namespace %s {', cppname(name)) + line(out, indent + 1, 'void __install__(PyObject *module);') + line(out, indent + 1, 'void __initialize__(PyObject *module);') + line(out, indent, '}') + + line(out) + line(out, indent, 'void __install__(PyObject *module)') + line(out, indent, '{') + for name in types: + line(out, indent + 1, 't_%s::install(module);', name) + for name, entries in packages: + line(out, indent + 1, '%s::__install__(module);', cppname(name)) + line(out, indent, '}') + + line(out) + if not names: + line(out, indent, 'PyObject *__initialize__(PyObject *module, PyObject *args, PyObject *kwds)') + line(out, indent, '{') + line(out, indent + 1, 'PyObject *env = initVM(module, args, kwds);') + line(out) + line(out, indent + 1, 'if (env == NULL)') + line(out, indent + 2, 'return NULL;') + line(out) + line(out, indent + 1, 'try {'); + indent += 1 + else: + line(out, indent, 'void __initialize__(PyObject *module)') + line(out, indent, '{') + for name in types: + line(out, indent + 1, 't_%s::initialize(module);', name) + for name, entries in packages: + line(out, indent + 1, '%s::__initialize__(module);', cppname(name)) + if not names: + line(out, indent + 1, 'return env;') + indent -= 1 + line(out, indent + 1, '} catch (JCCEnv::exception e) {') + line(out, indent + 2, 'PyErr_SetJavaError(e.throwable);') + line(out, indent + 2, 'return NULL;') + line(out, indent + 1, '}') + + line(out, indent, '}') + + while indent: + indent -= 1 + line(out, indent, '}') + + if not allInOne: + out.close() + else: + line(out) + + for name, entries in packages: + package(out, allInOne, cppdir, entries, names + (name,)) + + +def module(out, allInOne, classes, cppdir, moduleName, shared, generics): + + extname = '_%s' %(moduleName) + line(out, 0, '#include ') + line(out, 0, '#include "macros.h"') + line(out, 0, '#include "jccfuncs.h"') + + if allInOne: + out_init = file(os.path.join(cppdir, '__init__.cpp'), 'w') + namespaces = {} + for cls in classes: + namespace = namespaces + classNames = cls.getName().split('.') + for className in classNames[:-1]: + namespace = namespace.setdefault(className, {}) + namespace[classNames[-1]] = True + if allInOne: + package(out_init, True, cppdir, namespaces, ()) + out_init.close() + else: + package(None, False, cppdir, namespaces, ()) + + line(out) + line(out, 0, 'PyObject *initJCC(PyObject *module);') + line(out, 0, 'void __install__(PyObject *module);') + line(out, 0, 'extern PyTypeObject JObject$$Type, ConstVariableDescriptor$$Type, FinalizerClass$$Type, FinalizerProxy$$Type;') + line(out, 0, 'extern void _install_jarray(PyObject *);') + line(out) + line(out, 0, 'extern "C" {') + + line(out) + line(out, 1, 'void init%s(void)', extname) + line(out, 1, '{') + line(out, 2, 'PyObject *module = Py_InitModule3("%s", jcc_funcs, "");', + extname); + line(out) + line(out, 2, 'initJCC(module);') + line(out) + line(out, 2, 'INSTALL_TYPE(JObject, module);') + line(out, 2, 'INSTALL_TYPE(ConstVariableDescriptor, module);') + line(out, 2, 'INSTALL_TYPE(FinalizerClass, module);') + line(out, 2, 'INSTALL_TYPE(FinalizerProxy, module);') + line(out, 2, '_install_jarray(module);') + line(out, 2, '__install__(module);') + line(out, 1, '}') + line(out, 0, '}') + + +def compile(env, jccPath, output, moduleName, install, dist, debug, jars, + version, prefix, root, install_dir, home_dir, use_distutils, + shared, compiler, modules, wininst, arch, generics): + + try: + if use_distutils: + raise ImportError + from setuptools import setup, Extension + with_setuptools = True + if shared and not SHARED: + raise NotImplementedError, "JCC was not built with --shared mode support, see JCC's INSTALL file for more information" + except ImportError: + if python_ver < '2.4': + raise ImportError, 'setuptools is required when using Python 2.3' + if shared: + raise ImportError, 'setuptools is required when using --shared' + from distutils.core import setup, Extension + with_setuptools = False + + extname = '_%s' %(moduleName) + + modulePath = os.path.join(output, moduleName) + if not os.path.isdir(modulePath): + os.makedirs(modulePath) + + out = file(os.path.join(modulePath, '__init__.py'), 'w') + line(out) + if shared: + line(out, 0, "import os, sys") + line(out) + line(out, 0, "if sys.platform == 'win32':") + line(out, 1, "import jcc, %s", extname) + line(out, 0, "else:") + line(out, 1, "import %s", extname) + else: + line(out, 0, 'import os, %s', extname) + line(out) + line(out, 0, '__dir__ = os.path.abspath(os.path.dirname(__file__))') + + package_data = [] + for jar in jars: + shutil.copy2(jar, modulePath) + package_data.append(os.path.basename(jar)) + + packages = [moduleName] + if modules: + for module in modules: + if os.path.isdir(module): + def copytree(src, dst, is_package): + if is_package: + packages.append('.'.join((moduleName, src.replace(os.path.sep, '.')))) + if not os.path.exists(dst): + os.mkdir(dst) + for name in os.listdir(src): + if name.startswith('.'): + continue + _src = os.path.join(src, name) + if os.path.islink(_src): + continue + _dst = os.path.join(dst, name) + if os.path.isdir(_src): + copytree(_src, _dst, os.path.exists(os.path.join(_src, '__init__.py'))) + elif not is_package or name.endswith('.py'): + shutil.copy2(_src, _dst) + dst = modulePath + if os.path.exists(os.path.join(module, '__init__.py')): + dst = os.path.join(modulePath, os.path.basename(module)) + copytree(module, dst, True) + else: + copytree(module, dst, False) + else: + shutil.copy2(module.split('.')[0] + '.py', modulePath) + + line(out) + line(out, 0, 'class JavaError(Exception):') + line(out, 1, 'def getJavaException(self):') + line(out, 2, 'return self.args[0]') + line(out, 1, 'def __str__(self):') + line(out, 2, 'writer = %s.StringWriter()', extname) + line(out, 2, 'self.getJavaException().printStackTrace(%s.PrintWriter(writer))', extname) + line(out, 2, 'return "\\n".join((super(JavaError, self).__str__(), " Java stacktrace:", str(writer)))') + line(out) + line(out, 0, 'class InvalidArgsError(Exception):') + line(out, 1, 'pass') + line(out) + line(out, 0, '%s._set_exception_types(JavaError, InvalidArgsError)', + extname) + + if version: + line(out) + line(out, 0, 'VERSION = "%s"', version) + + line(out, 0, 'CLASSPATH = [%s]' %(', '.join(['os.path.join(__dir__, "%s")' %(os.path.basename(jar)) for jar in jars]))) + line(out, 0, 'CLASSPATH = os.pathsep.join(CLASSPATH)') + line(out, 0, '%s.CLASSPATH = CLASSPATH', extname) + line(out, 0, '%s._set_function_self(%s.initVM, %s)', + extname, extname, extname) + + line(out) + line(out, 0, 'from %s import *', extname) + out.close() + + includes = [os.path.join(output, extname), + os.path.join(jccPath, 'sources')] + + sources = ['JObject.cpp', 'JArray.cpp', 'functions.cpp', 'types.cpp'] + if not shared: + sources.append('jcc.cpp') + sources.append('JCCEnv.cpp') + for source in sources: + shutil.copy2(os.path.join(jccPath, 'sources', source), + os.path.join(output, extname)) + + sources = [] + for path, dirs, names in os.walk(os.path.join(output, extname)): + for name in names: + if name.endswith('.cpp'): + sources.append(os.path.join(path, name)) + + script_args = ['build_ext'] + + includes[0:0] = INCLUDES + compile_args = CFLAGS + link_args = LFLAGS + defines=['PYTHON'] + + if compiler: + script_args.append('--compiler=%s' %(compiler)) + + if shared: + defines.append('_jcc_shared') + script_args.append('--define=%s' %(','.join(defines))) + + if debug: + script_args.append('--debug') + compile_args += DEBUG_CFLAGS + elif sys.platform == 'win32': + pass + elif sys.platform == 'sunos5': + link_args.append('-Wl,-s') + else: + link_args.append('-Wl,-S') + + if install: + script_args.append('install') + if prefix: + script_args.append('--prefix=%s' % prefix) + if root: + script_args.append('--root=%s' % root) + if install_dir: + script_args.append('--install-lib=%s' % install_dir) + if home_dir: + script_args.append('--home=%s' % home_dir) + + if dist: + if wininst: + script_args.append('bdist_wininst') + elif with_setuptools: + script_args.append('bdist_egg') + else: + script_args.append('bdist') + + args = { + 'extra_compile_args': compile_args, + 'extra_link_args': link_args, + 'include_dirs': includes, + 'sources': sources + } + + if generics: + args['define_macros'] = [('_java_generics', None)] + + if shared: + shlibdir = os.path.dirname(os.path.dirname(_jcc.__file__)) + if sys.platform == 'darwin': # distutils no good with -R + machine = platform.machine() + if machine.startswith('iPod') or machine.startswith('iPhone'): + args['extra_link_args'] += ['-L' + shlibdir] + else: + args['extra_link_args'] += ['-Wl,-rpath', shlibdir] + args['library_dirs'] = [shlibdir] + args['libraries'] = ['jcc'] + elif sys.platform == 'linux2': # distutils no good with -R + args['extra_link_args'] += ['-Wl,-rpath', shlibdir] + args['library_dirs'] = [shlibdir] + args['libraries'] = ['jcc'] + elif sys.platform == 'win32': + jcclib = 'jcc%s.lib' %(debug and '_d' or '') + args['extra_link_args'] += [os.path.join(shlibdir, 'jcc', jcclib)] + else: + raise NotImplementedError, "shared mode on %s" %(sys.platform) + + if arch and sys.platform == 'darwin': + from distutils import sysconfig + + config_vars = sysconfig.get_config_vars() + cflags = config_vars['CFLAGS'].split(' ') + count = len(cflags) + i = 0 + while i < count - 1: + if cflags[i] == '-arch' and cflags[i + 1] not in arch: + del cflags[i:i+2] + count -= 2 + else: + i += 1 + config_vars['CFLAGS'] = ' '.join(cflags) + + extensions = [Extension('.'.join([moduleName, extname]), **args)] + + args = { + 'name': moduleName, + 'packages': packages, + 'package_dir': {moduleName: modulePath}, + 'package_data': {moduleName: package_data}, + 'version': version, + 'ext_modules': extensions, + 'script_args': script_args + } + if with_setuptools: + args['zip_safe'] = False + + setup(**args) diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/JArray.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/JArray.cpp Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,1209 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef PYTHON + +#include +#include +#include "structmember.h" + +#include "JArray.h" +#include "functions.h" +#include "java/lang/Class.h" + +using namespace java::lang; + + +template class _t_jarray : public t_jarray { +public: + static PyObject *format; +}; + +template +static PyObject *get(U *self, int n) +{ + return self->array.get(n); +} + +template +static PyObject *toSequence(U *self) +{ + return self->array.toSequence(); +} + +template +static PyObject *toSequence(U *self, int lo, int hi) +{ + return self->array.toSequence(lo, hi); +} + +template class _t_iterator { +public: + PyObject_HEAD + U *obj; + Py_ssize_t position; + + static void dealloc(_t_iterator *self) + { + Py_XDECREF(self->obj); + self->ob_type->tp_free((PyObject *) self); + } + + static PyObject *iternext(_t_iterator *self) + { + if (self->position < (Py_ssize_t) self->obj->array.length) + return get(self->obj, self->position++); + + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + static PyTypeObject *JArrayIterator; +}; + +template +static int init(U *self, PyObject *args, PyObject *kwds) +{ + PyObject *obj; + + if (!PyArg_ParseTuple(args, "O", &obj)) + return -1; + + if (PySequence_Check(obj)) + { + self->array = JArray(obj); + if (PyErr_Occurred()) + return -1; + } + else if (PyGen_Check(obj)) + { + PyObject *tuple = + PyObject_CallFunctionObjArgs((PyObject *) &PyTuple_Type, obj, NULL); + + if (!tuple) + return -1; + + self->array = JArray(tuple); + Py_DECREF(tuple); + if (PyErr_Occurred()) + return -1; + } + else if (PyInt_Check(obj)) + { + int n = PyInt_AsLong(obj); + + if (n < 0) + { + PyErr_SetObject(PyExc_ValueError, obj); + return -1; + } + + self->array = JArray(n); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + return 0; +} + +template +static void dealloc(U *self) +{ + self->array = JArray((jobject) NULL); + self->ob_type->tp_free((PyObject *) self); +} + +template +static PyObject *_format(U *self, PyObject *(*fn)(PyObject *)) +{ + if (self->array.this$) + { + PyObject *list = toSequence(self); + + if (list) + { + PyObject *result = (*fn)(list); + + Py_DECREF(list); + if (result) + { + PyObject *args = PyTuple_New(1); + + PyTuple_SET_ITEM(args, 0, result); + result = PyString_Format(U::format, args); + Py_DECREF(args); + + return result; + } + } + + return NULL; + } + + return PyString_FromString(""); +} + +template +static PyObject *repr(U *self) +{ + return _format(self, (PyObject *(*)(PyObject *)) PyObject_Repr); +} + +template +static PyObject *str(U *self) +{ + return _format(self, (PyObject *(*)(PyObject *)) PyObject_Str); +} + +template +static int _compare(U *self, PyObject *value, int i0, int i1, int op, int *cmp) +{ + PyObject *v0 = get(self, i0); + PyObject *v1 = PySequence_Fast_GET_ITEM(value, i1); /* borrowed */ + + if (!v0) + return -1; + + if (!v1) + { + Py_DECREF(v0); + return -1; + } + + *cmp = PyObject_RichCompareBool(v0, v1, op); + Py_DECREF(v0); + + if (*cmp < 0) + return -1; + + return 0; +} + +template +static PyObject *richcompare(U *self, PyObject *value, int op) +{ + PyObject *result = NULL; + int s0, s1; + + if (!PySequence_Check(value)) + { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + + value = PySequence_Fast(value, "not a sequence"); + if (!value) + return NULL; + + s0 = PySequence_Fast_GET_SIZE(value); + s1 = self->array.length; + + if (s1 < 0) + { + Py_DECREF(value); + return NULL; + } + + if (s0 != s1) + { + switch (op) { + case Py_EQ: result = Py_False; break; + case Py_NE: result = Py_True; break; + } + } + + if (!result) + { + int i0, i1, cmp = 1; + + for (i0 = 0, i1 = 0; i0 < s0 && i1 < s1 && cmp; i0++, i1++) { + if (_compare(self, value, i0, i1, Py_EQ, &cmp) < 0) + { + Py_DECREF(value); + return NULL; + } + } + + if (cmp) + { + switch (op) { + case Py_LT: cmp = s0 < s1; break; + case Py_LE: cmp = s0 <= s1; break; + case Py_EQ: cmp = s0 == s1; break; + case Py_NE: cmp = s0 != s1; break; + case Py_GT: cmp = s0 > s1; break; + case Py_GE: cmp = s0 >= s1; break; + default: cmp = 0; + } + + result = cmp ? Py_True : Py_False; + } + else if (op == Py_EQ) + result = Py_False; + else if (op == Py_NE) + result = Py_True; + else if (_compare(self, value, i0, i1, op, &cmp) < 0) + { + Py_DECREF(value); + return NULL; + } + else + result = cmp ? Py_True : Py_False; + } + Py_DECREF(value); + + Py_INCREF(result); + return result; +} + +template +static PyObject *iter(U *self) +{ + _t_iterator *it = + PyObject_New(_t_iterator, _t_iterator::JArrayIterator); + + if (it) + { + it->position = 0; + it->obj = self; Py_INCREF((PyObject *) self); + } + + return (PyObject *) it; +} + +template +static Py_ssize_t seq_length(U *self) +{ + if (self->array.this$) + return self->array.length; + + return 0; +} + +template +static PyObject *seq_get(U *self, Py_ssize_t n) +{ + return get(self, n); +} + +template +static int seq_contains(U *self, PyObject *value) +{ + return 0; +} + +template +static PyObject *seq_concat(U *self, PyObject *arg) +{ + PyObject *list = toSequence(self); + + if (list != NULL && + PyList_Type.tp_as_sequence->sq_inplace_concat(list, arg) < 0) + { + Py_DECREF(list); + return NULL; + } + + return list; +} + +template +static PyObject *seq_repeat(U *self, Py_ssize_t n) +{ + PyObject *list = toSequence(self); + + if (list != NULL && + PyList_Type.tp_as_sequence->sq_inplace_repeat(list, n) < 0) + { + Py_DECREF(list); + return NULL; + } + + return list; +} + +template +static PyObject *seq_getslice(U *self, Py_ssize_t lo, Py_ssize_t hi) +{ + return toSequence(self, lo, hi); +} + +template +static int seq_set(U *self, Py_ssize_t n, PyObject *value) +{ + return self->array.set(n, value); +} + +template +static int seq_setslice(U *self, Py_ssize_t lo, Py_ssize_t hi, PyObject *values) +{ + int length = self->array.length; + + if (values == NULL) + { + PyErr_SetString(PyExc_ValueError, "array size cannot change"); + return -1; + } + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *sequence = PySequence_Fast(values, "not a sequence"); + if (!sequence) + return -1; + + int size = PySequence_Fast_GET_SIZE(sequence); + if (size < 0) + goto error; + + if (size != hi - lo) + { + PyErr_SetString(PyExc_ValueError, "array size cannot change"); + goto error; + } + + for (int i = lo; i < hi; i++) { + PyObject *value = PySequence_Fast_GET_ITEM(sequence, i - lo); + + if (value == NULL) + goto error; + + if (self->array.set(i, value) < 0) + goto error; + } + + Py_DECREF(sequence); + return 0; + + error: + Py_DECREF(sequence); + return -1; +} + +template +static jclass initializeClass(void) +{ + return env->get_vm_env()->GetObjectClass(JArray(0).this$); +} + +template +static PyObject *cast_(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *arg, *clsObj; + + if (!PyArg_ParseTuple(args, "O", &arg)) + return NULL; + + if (!PyObject_TypeCheck(arg, &Object$$Type)) + { + PyErr_SetObject(PyExc_TypeError, arg); + return NULL; + } + + Class argCls = ((t_Object *) arg)->object.getClass(); + + if (!argCls.isArray()) + { + PyErr_SetObject(PyExc_TypeError, arg); + return NULL; + } + + clsObj = PyObject_GetAttrString((PyObject *) type, "class_"); + if (!clsObj) + return NULL; + + Class arrayCls = ((t_Class *) clsObj)->object; + + if (!arrayCls.isAssignableFrom(argCls)) + { + PyErr_SetObject(PyExc_TypeError, arg); + return NULL; + } + + return JArray(((t_JObject *) arg)->object.this$).wrap(); +} + +template +static PyObject *instance_(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *arg, *clsObj; + + if (!PyArg_ParseTuple(args, "O", &arg)) + return NULL; + + if (!PyObject_TypeCheck(arg, &Object$$Type)) + Py_RETURN_FALSE; + + Class argCls = ((t_Object *) arg)->object.getClass(); + + if (!argCls.isArray()) + Py_RETURN_FALSE; + + clsObj = PyObject_GetAttrString((PyObject *) type, "class_"); + if (!clsObj) + return NULL; + + Class arrayCls = ((t_Class *) clsObj)->object; + + if (!arrayCls.isAssignableFrom(argCls)) + Py_RETURN_FALSE; + + Py_RETURN_TRUE; +} + +template +static PyObject *assignable_(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + return instance_(type, args, kwds); +} + +template< typename T, typename U = _t_jarray > class jarray_type { +public: + PySequenceMethods seq_methods; + PyTypeObject type_object; + + class iterator_type { + public: + PyTypeObject type_object; + + void install(char *name, PyObject *module) + { + type_object.tp_name = name; + + if (PyType_Ready(&type_object) == 0) + { + Py_INCREF((PyObject *) &type_object); + PyModule_AddObject(module, name, (PyObject *) &type_object); + } + + _t_iterator::JArrayIterator = &type_object; + } + + iterator_type() + { + memset(&type_object, 0, sizeof(type_object)); + + type_object.ob_refcnt = 1; + type_object.ob_type = NULL; + type_object.tp_basicsize = sizeof(_t_iterator); + type_object.tp_dealloc = (destructor) _t_iterator::dealloc; + type_object.tp_flags = Py_TPFLAGS_DEFAULT; + type_object.tp_doc = "JArrayIterator wrapper type"; + type_object.tp_iter = (getiterfunc) PyObject_SelfIter; + type_object.tp_iternext = (iternextfunc) _t_iterator::iternext; + } + }; + + iterator_type iterator_type_object; + + void install(char *name, char *type_name, char *iterator_name, + PyObject *module) + { + type_object.tp_name = name; + + if (PyType_Ready(&type_object) == 0) + { + Py_INCREF((PyObject *) &type_object); + PyDict_SetItemString(type_object.tp_dict, "class_", + make_descriptor(initializeClass)); + + PyModule_AddObject(module, name, (PyObject *) &type_object); + } + + U::format = PyString_FromFormat("JArray<%s>%%s", type_name); + iterator_type_object.install(iterator_name, module); + } + + static PyObject *_new(PyTypeObject *type, PyObject *args, PyObject *kwds) + { + U *self = (U *) type->tp_alloc(type, 0); + + if (self) + self->array = JArray((jobject) NULL); + + return (PyObject *) self; + } + + jarray_type() + { + memset(&seq_methods, 0, sizeof(seq_methods)); + memset(&type_object, 0, sizeof(type_object)); + + static PyMethodDef methods[] = { + { "cast_", + (PyCFunction) (PyObject *(*)(PyTypeObject *, + PyObject *, PyObject *)) + cast_, + METH_VARARGS | METH_CLASS, NULL }, + { "instance_", + (PyCFunction) (PyObject *(*)(PyTypeObject *, + PyObject *, PyObject *)) + instance_, + METH_VARARGS | METH_CLASS, NULL }, + { "assignable_", + (PyCFunction) (PyObject *(*)(PyTypeObject *, + PyObject *, PyObject *)) + assignable_, + METH_VARARGS | METH_CLASS, NULL }, + { NULL, NULL, 0, NULL } + }; + + seq_methods.sq_length = + (lenfunc) (Py_ssize_t (*)(U *)) seq_length; + seq_methods.sq_concat = + (binaryfunc) (PyObject *(*)(U *, PyObject *)) seq_concat; + seq_methods.sq_repeat = + (ssizeargfunc) (PyObject *(*)(U *, Py_ssize_t)) seq_repeat; + seq_methods.sq_item = + (ssizeargfunc) (PyObject *(*)(U *, Py_ssize_t)) seq_get; + seq_methods.sq_slice = + (ssizessizeargfunc) (PyObject *(*)(U *, Py_ssize_t, Py_ssize_t)) + seq_getslice; + seq_methods.sq_ass_item = + (ssizeobjargproc) (int (*)(U *, Py_ssize_t, PyObject *)) seq_set; + seq_methods.sq_ass_slice = + (ssizessizeobjargproc) (int (*)(U *, Py_ssize_t, Py_ssize_t, + PyObject *)) seq_setslice; + seq_methods.sq_contains = + (objobjproc) (int (*)(U *, PyObject *)) seq_contains; + seq_methods.sq_inplace_concat = NULL; + seq_methods.sq_inplace_repeat = NULL; + + type_object.ob_refcnt = 1; + type_object.tp_basicsize = sizeof(U); + type_object.tp_dealloc = (destructor) (void (*)(U *)) dealloc; + type_object.tp_repr = (reprfunc) (PyObject *(*)(U *)) repr; + type_object.tp_as_sequence = &seq_methods; + type_object.tp_str = (reprfunc) (PyObject *(*)(U *)) str; + type_object.tp_flags = Py_TPFLAGS_DEFAULT; + type_object.tp_doc = "JArray wrapper type"; + type_object.tp_richcompare = + (richcmpfunc) (PyObject *(*)(U *, PyObject *, int)) richcompare; + type_object.tp_iter = (getiterfunc) (PyObject *(*)(U *)) iter; + type_object.tp_methods = methods; + type_object.tp_base = &Object$$Type; + type_object.tp_init = + (initproc) (int (*)(U *, PyObject *, PyObject *)) init; + type_object.tp_new = (newfunc) _new; + } +}; + +template class _t_jobjectarray : public _t_jarray { +public: + PyObject *(*wrapfn)(const T&); +}; + +template<> PyObject *get(_t_jobjectarray *self, int n) +{ + return self->array.get(n, self->wrapfn); +} + +template<> PyObject *toSequence(_t_jobjectarray *self) +{ + return self->array.toSequence(self->wrapfn); +} + +template<> PyObject *toSequence(_t_jobjectarray *self, int lo, int hi) +{ + return self->array.toSequence(lo, hi, self->wrapfn); +} + +template<> int init< jobject,_t_jobjectarray >(_t_jobjectarray *self, PyObject *args, PyObject *kwds) +{ + PyObject *obj, *clsObj = NULL; + PyObject *(*wrapfn)(const jobject &) = NULL; + jclass cls; + + if (!PyArg_ParseTuple(args, "O|O", &obj, &clsObj)) + return -1; + + if (clsObj == NULL) + cls = env->findClass("java/lang/Object"); + else if (PyObject_TypeCheck(clsObj, &Class$$Type)) + cls = (jclass) ((t_Class *) clsObj)->object.this$; + else if (PyType_Check(clsObj)) + { + if (PyType_IsSubtype((PyTypeObject *) clsObj, &JObject$$Type)) + { + PyObject *cobj = PyObject_GetAttrString(clsObj, "wrapfn_"); + + if (cobj == NULL) + PyErr_Clear(); + else + { + wrapfn = (PyObject *(*)(const jobject &)) + PyCObject_AsVoidPtr(cobj); + Py_DECREF(cobj); + } + + clsObj = PyObject_GetAttrString(clsObj, "class_"); + if (clsObj == NULL) + return -1; + + cls = (jclass) ((t_Class *) clsObj)->object.this$; + Py_DECREF(clsObj); + } + else + { + PyErr_SetObject(PyExc_ValueError, clsObj); + return -1; + } + } + else + { + PyErr_SetObject(PyExc_TypeError, clsObj); + return -1; + } + + if (PySequence_Check(obj)) + { + self->array = JArray(cls, obj); + if (PyErr_Occurred()) + return -1; + } + else if (PyGen_Check(obj)) + { + PyObject *tuple = + PyObject_CallFunctionObjArgs((PyObject *) &PyTuple_Type, obj, NULL); + + if (!tuple) + return -1; + + self->array = JArray(cls, tuple); + Py_DECREF(tuple); + if (PyErr_Occurred()) + return -1; + } + else if (PyInt_Check(obj)) + { + int n = PyInt_AsLong(obj); + + if (n < 0) + { + PyErr_SetObject(PyExc_ValueError, obj); + return -1; + } + + self->array = JArray(cls, n); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + self->wrapfn = wrapfn; + + return 0; +} + +template<> jclass initializeClass(void) +{ + jclass cls = env->findClass("java/lang/Object"); + return env->get_vm_env()->GetObjectClass(JArray(cls, 0).this$); +} + +template<> PyObject *cast_(PyTypeObject *type, + PyObject *args, PyObject *kwds) +{ + PyObject *arg, *clsArg = NULL; + PyObject *(*wrapfn)(const jobject&) = NULL; + jclass elementCls; + + if (!PyArg_ParseTuple(args, "O|O", &arg, &clsArg)) + return NULL; + + if (!PyObject_TypeCheck(arg, &Object$$Type)) + { + PyErr_SetObject(PyExc_TypeError, arg); + return NULL; + } + + Class argCls = ((t_Object *) arg)->object.getClass(); + + if (!argCls.isArray()) + { + PyErr_SetObject(PyExc_TypeError, arg); + return NULL; + } + + if (clsArg != NULL) + { + if (!PyType_Check(clsArg)) + { + PyErr_SetObject(PyExc_TypeError, clsArg); + return NULL; + } + else if (!PyType_IsSubtype((PyTypeObject *) clsArg, &JObject$$Type)) + { + PyErr_SetObject(PyExc_ValueError, clsArg); + return NULL; + } + + PyObject *cobj = PyObject_GetAttrString(clsArg, "wrapfn_"); + + if (cobj == NULL) + PyErr_Clear(); + else + { + wrapfn = (PyObject *(*)(const jobject &)) PyCObject_AsVoidPtr(cobj); + Py_DECREF(cobj); + } + + clsArg = PyObject_GetAttrString(clsArg, "class_"); + if (clsArg == NULL) + return NULL; + + elementCls = (jclass) ((t_Class *) clsArg)->object.this$; + Py_DECREF(clsArg); + } + else + elementCls = env->findClass("java/lang/Object"); + + JNIEnv *vm_env = env->get_vm_env(); + jobjectArray array = vm_env->NewObjectArray(0, elementCls, NULL); + Class arrayCls(vm_env->GetObjectClass((jobject) array)); + + if (!arrayCls.isAssignableFrom(argCls)) + { + PyErr_SetObject(PyExc_TypeError, arg); + return NULL; + } + + return JArray(((t_JObject *) arg)->object.this$).wrap(wrapfn); +} + +template<> PyObject *instance_(PyTypeObject *type, + PyObject *args, PyObject *kwds) +{ + PyObject *arg, *clsArg = NULL; + jclass elementCls; + + if (!PyArg_ParseTuple(args, "O|O", &arg, &clsArg)) + return NULL; + + if (!PyObject_TypeCheck(arg, &Object$$Type)) + Py_RETURN_FALSE; + + Class argCls = ((t_Object *) arg)->object.getClass(); + + if (!argCls.isArray()) + Py_RETURN_FALSE; + + if (clsArg != NULL) + { + if (!PyType_Check(clsArg)) + { + PyErr_SetObject(PyExc_TypeError, clsArg); + return NULL; + } + else if (!PyType_IsSubtype((PyTypeObject *) clsArg, &JObject$$Type)) + { + PyErr_SetObject(PyExc_ValueError, clsArg); + return NULL; + } + + clsArg = PyObject_GetAttrString(clsArg, "class_"); + if (clsArg == NULL) + return NULL; + + elementCls = (jclass) ((t_Class *) clsArg)->object.this$; + Py_DECREF(clsArg); + } + else + elementCls = env->findClass("java/lang/Object"); + + JNIEnv *vm_env = env->get_vm_env(); + jobjectArray array = vm_env->NewObjectArray(0, elementCls, NULL); + Class arrayCls(vm_env->GetObjectClass((jobject) array)); + + if (!arrayCls.isAssignableFrom(argCls)) + Py_RETURN_FALSE; + + Py_RETURN_TRUE; +} + +template<> PyObject *assignable_(PyTypeObject *type, + PyObject *args, PyObject *kwds) +{ + PyObject *arg, *clsArg = NULL; + jclass elementCls; + + if (!PyArg_ParseTuple(args, "O|O", &arg, &clsArg)) + return NULL; + + if (!PyObject_TypeCheck(arg, &Object$$Type)) + Py_RETURN_FALSE; + + Class argCls = ((t_Object *) arg)->object.getClass(); + + if (!argCls.isArray()) + Py_RETURN_FALSE; + + if (clsArg != NULL) + { + if (!PyType_Check(clsArg)) + { + PyErr_SetObject(PyExc_TypeError, clsArg); + return NULL; + } + else if (!PyType_IsSubtype((PyTypeObject *) clsArg, &JObject$$Type)) + { + PyErr_SetObject(PyExc_ValueError, clsArg); + return NULL; + } + + clsArg = PyObject_GetAttrString(clsArg, "class_"); + if (clsArg == NULL) + return NULL; + + elementCls = (jclass) ((t_Class *) clsArg)->object.this$; + Py_DECREF(clsArg); + } + else + elementCls = env->findClass("java/lang/Object"); + + JNIEnv *vm_env = env->get_vm_env(); + jobjectArray array = vm_env->NewObjectArray(0, elementCls, NULL); + Class arrayCls(vm_env->GetObjectClass((jobject) array)); + + if (!argCls.isAssignableFrom(arrayCls)) + Py_RETURN_FALSE; + + Py_RETURN_TRUE; +} + + +template PyTypeObject *_t_iterator::JArrayIterator; +template PyObject *_t_jarray::format; + +static jarray_type< jobject, _t_jobjectarray > jarray_jobject; + +static jarray_type jarray_jstring; +static jarray_type jarray_jboolean; +static jarray_type jarray_jbyte; +static jarray_type jarray_jchar; +static jarray_type jarray_jdouble; +static jarray_type jarray_jfloat; +static jarray_type jarray_jint; +static jarray_type jarray_jlong; +static jarray_type jarray_jshort; + + +PyObject *JArray::wrap(PyObject *(*wrapfn)(const jobject&)) +{ + if (this$ != NULL) + { + _t_jobjectarray *obj = + PyObject_New(_t_jobjectarray, &jarray_jobject.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + obj->wrapfn = wrapfn; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jstring.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jboolean.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jbyte.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jchar.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jdouble.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jfloat.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jint.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jlong.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray::wrap() +{ + if (this$ != NULL) + { + _t_jarray *obj = + PyObject_New(_t_jarray, &jarray_jshort.type_object); + + memset(&(obj->array), 0, sizeof(JArray)); + obj->array = *this; + + return (PyObject *) obj; + } + + Py_RETURN_NONE; +} + +PyObject *JArray_Type(PyObject *self, PyObject *arg) +{ + PyObject *type_name = NULL, *type; + char const *name = NULL; + + if (PyType_Check(arg)) + { + type_name = PyObject_GetAttrString(arg, "__name__"); + if (!type_name) + return NULL; + } + else if (PyString_Check(arg)) + { + type_name = arg; + Py_INCREF(type_name); + } + else if (PyFloat_Check(arg)) + { + type_name = NULL; + name = "double"; + } + else + { + PyObject *arg_type = (PyObject *) arg->ob_type; + + type_name = PyObject_GetAttrString(arg_type, "__name__"); + if (!type_name) + return NULL; + } + + if (type_name != NULL) + { + name = PyString_AsString(type_name); + Py_DECREF(type_name); + + if (!name) + return NULL; + } + + if (!strcmp(name, "object")) + type = (PyObject *) &jarray_jobject.type_object; + else if (!strcmp(name, "string")) + type = (PyObject *) &jarray_jstring.type_object; + else if (!strcmp(name, "bool")) + type = (PyObject *) &jarray_jboolean.type_object; + else if (!strcmp(name, "byte")) + type = (PyObject *) &jarray_jbyte.type_object; + else if (!strcmp(name, "char")) + type = (PyObject *) &jarray_jchar.type_object; + else if (!strcmp(name, "double")) + type = (PyObject *) &jarray_jdouble.type_object; + else if (!strcmp(name, "float")) + type = (PyObject *) &jarray_jfloat.type_object; + else if (!strcmp(name, "int")) + type = (PyObject *) &jarray_jint.type_object; + else if (!strcmp(name, "long")) + type = (PyObject *) &jarray_jlong.type_object; + else if (!strcmp(name, "short")) + type = (PyObject *) &jarray_jshort.type_object; + else + { + PyErr_SetObject(PyExc_ValueError, arg); + return NULL; + } + + Py_INCREF(type); + return type; +} + +static PyObject *t_jarray_jbyte__get_string_(t_jarray *self, void *data) +{ + return self->array.to_string_(); +} + +static PyGetSetDef t_jarray_jbyte__fields[] = { + { "string_", (getter) t_jarray_jbyte__get_string_, NULL, "", NULL }, + { NULL, NULL, NULL, NULL, NULL } +}; + + +PyTypeObject *JArrayObject$$Type; +PyTypeObject *JArrayString$$Type; +PyTypeObject *JArrayBool$$Type; +PyTypeObject *JArrayByte$$Type; +PyTypeObject *JArrayChar$$Type; +PyTypeObject *JArrayDouble$$Type; +PyTypeObject *JArrayFloat$$Type; +PyTypeObject *JArrayInt$$Type; +PyTypeObject *JArrayLong$$Type; +PyTypeObject *JArrayShort$$Type; + + +void _install_jarray(PyObject *module) +{ + jarray_jobject.install("JArray_object", "object", + "__JArray_object_iterator", module); + JArrayObject$$Type = &jarray_jobject.type_object; + + jarray_jstring.install("JArray_string", "string", + "__JArray_string_iterator", module); + JArrayString$$Type = &jarray_jstring.type_object; + + jarray_jboolean.install("JArray_bool", "bool", + "__JArray_bool_iterator", module); + JArrayBool$$Type = &jarray_jboolean.type_object; + + jarray_jbyte.type_object.tp_getset = t_jarray_jbyte__fields; + jarray_jbyte.install("JArray_byte", "byte", + "__JArray_byte_iterator", module); + JArrayByte$$Type = &jarray_jbyte.type_object; + + jarray_jchar.install("JArray_char", "char", + "__JArray_char_iterator", module); + JArrayChar$$Type = &jarray_jchar.type_object; + + jarray_jdouble.install("JArray_double", "double", + "__JArray_double_iterator", module); + JArrayDouble$$Type = &jarray_jdouble.type_object; + + jarray_jfloat.install("JArray_float", "float", + "__JArray_float_iterator", module); + JArrayFloat$$Type = &jarray_jfloat.type_object; + + jarray_jint.install("JArray_int", "int", + "__JArray_int_iterator", module); + JArrayInt$$Type = &jarray_jint.type_object; + + jarray_jlong.install("JArray_long", "long", + "__JArray_long_iterator", module); + JArrayLong$$Type = &jarray_jlong.type_object; + + jarray_jshort.install("JArray_short", "short", + "__JArray_short_iterator", module); + JArrayShort$$Type = &jarray_jshort.type_object; +} + +#endif /* PYTHON */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/JArray.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/JArray.h Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,1587 @@ +/* + * Copyright (c) 2007-2008 Open Source Applications Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _JArray_H +#define _JArray_H + +#ifdef PYTHON +#include +#include "macros.h" + +extern jobjectArray fromPySequence(jclass cls, PyObject *sequence); +extern PyObject *PyErr_SetJavaError(jthrowable throwable); + +extern PyTypeObject *JArrayObject$$Type; +extern PyTypeObject *JArrayString$$Type; +extern PyTypeObject *JArrayBool$$Type; +extern PyTypeObject *JArrayByte$$Type; +extern PyTypeObject *JArrayChar$$Type; +extern PyTypeObject *JArrayDouble$$Type; +extern PyTypeObject *JArrayFloat$$Type; +extern PyTypeObject *JArrayInt$$Type; +extern PyTypeObject *JArrayLong$$Type; +extern PyTypeObject *JArrayShort$$Type; + +#endif + +#include "JCCEnv.h" +#include "java/lang/Object.h" + + +template class JArray : public java::lang::Object { +public: + int length; + + explicit JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jobjectArray) this$) : 0; + } + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(fromPySequence(T::initializeClass(), sequence)) { + length = this$ ? env->getArrayLength((jobjectArray) this$) : 0; + } + + JArray(jclass cls, PyObject *sequence) : java::lang::Object(fromPySequence(cls, sequence)) { + length = this$ ? env->getArrayLength((jobjectArray) this$) : 0; + } + + PyObject *toSequence(PyObject *(*wrapfn)(const T&)) + { + if (this$ == NULL) + Py_RETURN_NONE; + + PyObject *list = PyList_New(length); + + for (int i = 0; i < length; i++) + PyList_SET_ITEM(list, i, (*wrapfn)((*this)[i])); + + return list; + } + + PyObject *get(int n, PyObject *(*wrapfn)(const T&)) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + return (*wrapfn)((*this)[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } +#endif + + T operator[](int n) { + return T(env->getObjectArrayElement((jobjectArray) this$, n)); + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + JArray(jclass cls, int n) : java::lang::Object(env->get_vm_env()->NewObjectArray(n, cls, NULL)) { + length = env->getArrayLength((jobjectArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jobjectArray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + +#ifdef PYTHON + JArray(jclass cls, PyObject *sequence) : java::lang::Object(fromPySequence(cls, sequence)) { + length = this$ ? env->getArrayLength((jobjectArray) this$) : 0; + } + + PyObject *toSequence(PyObject *(*wrapfn)(const jobject&)) + { + return toSequence(0, length, wrapfn); + } + + PyObject *toSequence(int lo, int hi, PyObject *(*wrapfn)(const jobject&)) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + + if (!wrapfn) + wrapfn = java::lang::t_Object::wrap_jobject; + + for (int i = lo; i < hi; i++) { + jobject jobj = env->getObjectArrayElement((jobjectArray) this$, i); + PyObject *obj = (*wrapfn)(jobj); + + PyList_SET_ITEM(list, i - lo, obj); + } + + return list; + } + + PyObject *get(int n, PyObject *(*wrapfn)(const jobject&)) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!wrapfn) + wrapfn = java::lang::t_Object::wrap_jobject; + + jobject jobj = + env->getObjectArrayElement((jobjectArray) this$, n); + + return (*wrapfn)(jobj); + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyObject_TypeCheck(obj, &JObject$$Type)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + jobject jobj = ((t_JObject *) obj)->object.this$; + + try { + env->setObjectArrayElement((jobjectArray) this$, n, jobj); + } catch (JCCEnv::exception e) { + PyErr_SetJavaError(e.throwable); + return -1; + } + + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(PyObject *(*wrapfn)(const jobject&)); +#endif + + jobject operator[](int n) { + return (jobject) env->getObjectArrayElement((jobjectArray) this$, n); + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jobjectArray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewObjectArray(n, env->findClass("java/lang/String"), NULL)) { + length = env->getArrayLength((jobjectArray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewObjectArray(PySequence_Length(sequence), env->findClass("java/lang/String"), NULL)) { + length = env->getArrayLength((jobjectArray) this$); + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (obj == NULL) + break; + + jstring str = env->fromPyString(obj); + + Py_DECREF(obj); + if (PyErr_Occurred()) + break; + + env->setObjectArrayElement((jobjectArray) this$, i, str); + env->get_vm_env()->DeleteLocalRef(str); + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + + for (int i = lo; i < hi; i++) { + jstring str = (jstring) + env->getObjectArrayElement((jobjectArray) this$, i); + PyObject *obj = env->fromJString(str, 1); + + PyList_SET_ITEM(list, i - lo, obj); + } + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + jstring str = (jstring) + env->getObjectArrayElement((jobjectArray) this$, n); + PyObject *obj = env->fromJString(str, 1); + + return obj; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + jstring str = env->fromPyString(obj); + + if (PyErr_Occurred()) + return -1; + + env->setObjectArrayElement((jobjectArray) this$, n, str); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jstring operator[](int n) { + return (jstring) env->getObjectArrayElement((jobjectArray) this$, n); + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jbooleanArray array; + jboolean *elts; + public: + arrayElements(jbooleanArray array) { + this->array = array; + elts = env->get_vm_env()->GetBooleanArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseBooleanArrayElements(array, elts, isCopy); + } + operator jboolean *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jbooleanArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewBooleanArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewBooleanArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jboolean *buf = (jboolean *) elts; + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (obj == Py_True || obj == Py_False) + { + buf[i] = (jboolean) (obj == Py_True); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + arrayElements elts = elements(); + jboolean *buf = (jboolean *) elts; + + for (int i = lo; i < hi; i++) { + jboolean value = buf[i]; + PyObject *obj = value ? Py_True : Py_False; + + Py_INCREF(obj); + PyList_SET_ITEM(list, i - lo, obj); + } + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + Py_RETURN_BOOL(elements()[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + elements()[n] = (jboolean) PyObject_IsTrue(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jboolean operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jboolean *elts = (jboolean *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jboolean value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jbyteArray array; + jbyte *elts; + public: + arrayElements(jbyteArray array) { + this->array = array; + elts = env->get_vm_env()->GetByteArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseByteArrayElements(array, elts, isCopy); + } + operator jbyte *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jbyteArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewByteArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewByteArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jbyte *buf = (jbyte *) elts; + + if (PyString_Check(sequence)) + memcpy(buf, PyString_AS_STRING(sequence), length); + else + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyString_Check(obj) && (PyString_GET_SIZE(obj) == 1)) + { + buf[i] = (jbyte) PyString_AS_STRING(obj)[0]; + Py_DECREF(obj); + } + else if (PyInt_CheckExact(obj)) + { + buf[i] = (jbyte) PyInt_AS_LONG(obj); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + char getType() + { + return 'Z'; + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + arrayElements elts = elements(); + jbyte *buf = (jbyte *) elts; + PyObject *tuple = PyTuple_New(hi - lo); + + for (int i = 0; i < hi - lo; i++) + PyTuple_SET_ITEM(tuple, i, PyInt_FromLong(buf[lo + i])); + + return tuple; + } + + PyObject *to_string_() + { + if (this$ == NULL) + Py_RETURN_NONE; + + arrayElements elts = elements(); + jbyte *buf = (jbyte *) elts; + + return PyString_FromStringAndSize((char *) buf, length); + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + jbyte b = (*this)[n]; + return PyInt_FromLong(b); + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyInt_CheckExact(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + elements()[n] = (jbyte) PyInt_AS_LONG(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jbyte operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jbyte *elts = (jbyte *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jbyte value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jcharArray array; + jchar *elts; + public: + arrayElements(jcharArray array) { + this->array = array; + elts = env->get_vm_env()->GetCharArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseCharArrayElements(array, elts, isCopy); + } + operator jchar *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jcharArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewCharArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewCharArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jchar *buf = (jchar *) elts; + + if (PyUnicode_Check(sequence)) + { + if (sizeof(Py_UNICODE) == sizeof(jchar)) + memcpy(buf, PyUnicode_AS_UNICODE(sequence), + length * sizeof(jchar)); + else + { + Py_UNICODE *pchars = PyUnicode_AS_UNICODE(sequence); + for (int i = 0; i < length; i++) + buf[i] = (jchar) pchars[i]; + } + } + else + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyUnicode_Check(obj) && (PyUnicode_GET_SIZE(obj) == 1)) + { + buf[i] = (jchar) PyUnicode_AS_UNICODE(obj)[0]; + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + arrayElements elts = elements(); + jchar *buf = (jchar *) elts; + + if (sizeof(Py_UNICODE) == sizeof(jchar)) + return PyUnicode_FromUnicode((const Py_UNICODE *) buf + lo, + hi - lo); + else + { + PyObject *string = PyUnicode_FromUnicode(NULL, hi - lo); + Py_UNICODE *pchars = PyUnicode_AS_UNICODE(string); + + for (int i = lo; i < hi; i++) + pchars[i - lo] = (Py_UNICODE) buf[i]; + + return string; + } + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + jchar c = (*this)[n]; + + if (sizeof(Py_UNICODE) == sizeof(jchar)) + return PyUnicode_FromUnicode((const Py_UNICODE *) &c, 1); + else + { + PyObject *string = PyUnicode_FromUnicode(NULL, 1); + Py_UNICODE *pchars = PyUnicode_AS_UNICODE(string); + + pchars[0] = (Py_UNICODE) c; + + return string; + } + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyUnicode_Check(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + if (PyUnicode_GET_SIZE(obj) != 1) + { + PyErr_SetObject(PyExc_ValueError, obj); + return -1; + } + + elements()[n] = (jchar) PyUnicode_AS_UNICODE(obj)[0]; + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jchar operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jchar *elts = (jchar *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jchar value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jdoubleArray array; + jdouble *elts; + public: + arrayElements(jdoubleArray array) { + this->array = array; + elts = env->get_vm_env()->GetDoubleArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseDoubleArrayElements(array, elts, isCopy); + } + operator jdouble *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jdoubleArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewDoubleArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewDoubleArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jdouble *buf = (jdouble *) elts; + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyFloat_Check(obj)) + { + buf[i] = (jdouble) PyFloat_AS_DOUBLE(obj); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + arrayElements elts = elements(); + jdouble *buf = (jdouble *) elts; + + for (int i = lo; i < hi; i++) + PyList_SET_ITEM(list, i - lo, PyFloat_FromDouble((double) buf[i])); + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + return PyFloat_FromDouble((double) (*this)[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyFloat_Check(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + elements()[n] = (jdouble) PyFloat_AS_DOUBLE(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jdouble operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jdouble *elts = (jdouble *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jdouble value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jfloatArray array; + jfloat *elts; + public: + arrayElements(jfloatArray array) { + this->array = array; + elts = env->get_vm_env()->GetFloatArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseFloatArrayElements(array, elts, isCopy); + } + operator jfloat *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jfloatArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewFloatArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewFloatArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jfloat *buf = (jfloat *) elts; + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyFloat_Check(obj)) + { + buf[i] = (jfloat) PyFloat_AS_DOUBLE(obj); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + arrayElements elts = elements(); + jfloat *buf = (jfloat *) elts; + + for (int i = lo; i < hi; i++) + PyList_SET_ITEM(list, i - lo, PyFloat_FromDouble((double) buf[i])); + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + return PyFloat_FromDouble((double) (*this)[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyFloat_Check(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + elements()[n] = (jfloat) PyFloat_AS_DOUBLE(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jfloat operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jfloat *elts = (jfloat *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jfloat value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jintArray array; + jint *elts; + public: + arrayElements(jintArray array) { + this->array = array; + elts = env->get_vm_env()->GetIntArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseIntArrayElements(array, elts, isCopy); + } + operator jint *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jintArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewIntArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewIntArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jint *buf = (jint *) elts; + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyInt_Check(obj)) + { + buf[i] = (jint) PyInt_AS_LONG(obj); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + arrayElements elts = elements(); + jint *buf = (jint *) elts; + + for (int i = lo; i < hi; i++) + PyList_SET_ITEM(list, i - lo, PyInt_FromLong(buf[i])); + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + return PyInt_FromLong((*this)[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyInt_Check(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + elements()[n] = (jint) PyInt_AS_LONG(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jint operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jint *elts = (jint *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jint value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jlongArray array; + jlong *elts; + public: + arrayElements(jlongArray array) { + this->array = array; + elts = env->get_vm_env()->GetLongArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseLongArrayElements(array, elts, isCopy); + } + operator jlong *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jlongArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewLongArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewLongArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jlong *buf = (jlong *) elts; + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyLong_Check(obj)) + { + buf[i] = (jlong) PyLong_AsLongLong(obj); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + arrayElements elts = elements(); + jlong *buf = (jlong *) elts; + + for (int i = lo; i < hi; i++) + PyList_SET_ITEM(list, i - lo, PyLong_FromLongLong((long long) buf[i])); + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + return PyLong_FromLongLong((long long) (*this)[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyLong_Check(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + elements()[n] = (jlong) PyLong_AsLongLong(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jlong operator[](long n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jlong *elts = (jlong *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jlong value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +template<> class JArray : public java::lang::Object { + public: + int length; + + class arrayElements { + private: + jboolean isCopy; + jshortArray array; + jshort *elts; + public: + arrayElements(jshortArray array) { + this->array = array; + elts = env->get_vm_env()->GetShortArrayElements(array, &isCopy); + } + virtual ~arrayElements() { + env->get_vm_env()->ReleaseShortArrayElements(array, elts, isCopy); + } + operator jshort *() { + return elts; + } + }; + + arrayElements elements() { + return arrayElements((jshortArray) this$); + } + + JArray(jobject obj) : java::lang::Object(obj) { + length = this$ ? env->getArrayLength((jarray) this$) : 0; + } + + JArray(const JArray& obj) : java::lang::Object(obj) { + length = obj.length; + } + + JArray(int n) : java::lang::Object(env->get_vm_env()->NewShortArray(n)) { + length = env->getArrayLength((jarray) this$); + } + +#ifdef PYTHON + JArray(PyObject *sequence) : java::lang::Object(env->get_vm_env()->NewShortArray(PySequence_Length(sequence))) { + length = env->getArrayLength((jarray) this$); + arrayElements elts = elements(); + jshort *buf = (jshort *) elts; + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + + if (!obj) + break; + + if (PyInt_Check(obj)) + { + buf[i] = (jshort) PyInt_AS_LONG(obj); + Py_DECREF(obj); + } + else + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + break; + } + } + } + + PyObject *toSequence() + { + return toSequence(0, length); + } + + PyObject *toSequence(int lo, int hi) + { + if (this$ == NULL) + Py_RETURN_NONE; + + if (lo < 0) lo = length + lo; + if (lo < 0) lo = 0; + else if (lo > length) lo = length; + if (hi < 0) hi = length + hi; + if (hi < 0) hi = 0; + else if (hi > length) hi = length; + if (lo > hi) lo = hi; + + PyObject *list = PyList_New(hi - lo); + arrayElements elts = elements(); + jshort *buf = (jshort *) elts; + + for (int i = lo; i < hi; i++) + PyList_SET_ITEM(list, i - lo, PyInt_FromLong(buf[i])); + + return list; + } + + PyObject *get(int n) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + return PyInt_FromLong((long) (*this)[n]); + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return NULL; + } + + int set(int n, PyObject *obj) + { + if (this$ != NULL) + { + if (n < 0) + n = length + n; + + if (n >= 0 && n < length) + { + if (!PyInt_Check(obj)) + { + PyErr_SetObject(PyExc_TypeError, obj); + return -1; + } + + elements()[n] = (jshort) PyInt_AS_LONG(obj); + return 0; + } + } + + PyErr_SetString(PyExc_IndexError, "index out of range"); + return -1; + } + + PyObject *wrap(); +#endif + + jshort operator[](int n) { + JNIEnv *vm_env = env->get_vm_env(); + jboolean isCopy = 0; + jshort *elts = (jshort *) + vm_env->GetPrimitiveArrayCritical((jarray) this$, &isCopy); + jshort value = elts[n]; + + vm_env->ReleasePrimitiveArrayCritical((jarray) this$, elts, isCopy); + + return value; + } +}; + +#ifdef PYTHON + +template class t_jarray { +public: + PyObject_HEAD + JArray array; +}; + +#endif + +#endif /* _JArray_H */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/JCCEnv.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/JCCEnv.cpp Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,770 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "JCCEnv.h" + + +#if defined(_MSC_VER) || defined(__WIN32) +_DLL_EXPORT DWORD VM_ENV = 0; +#else +pthread_key_t JCCEnv::VM_ENV = (pthread_key_t) NULL; +#endif + +#if defined(_MSC_VER) || defined(__WIN32) + +static CRITICAL_SECTION *mutex = NULL; + +class lock { +public: + lock() { + EnterCriticalSection(mutex); + } + virtual ~lock() { + LeaveCriticalSection(mutex); + } +}; + +#else + +static pthread_mutex_t *mutex = NULL; + +class lock { +public: + lock() { + pthread_mutex_lock(mutex); + } + virtual ~lock() { + pthread_mutex_unlock(mutex); + } +}; + +#endif + +JCCEnv::JCCEnv(JavaVM *vm, JNIEnv *vm_env) +{ +#if defined(_MSC_VER) || defined(__WIN32) + if (!mutex) + { + mutex = new CRITICAL_SECTION(); + InitializeCriticalSection(mutex); + } +#else + if (!mutex) + { + mutex = new pthread_mutex_t(); + pthread_mutex_init(mutex, NULL); + } +#endif + + if (vm) + set_vm(vm, vm_env); + else + this->vm = NULL; +} + +void JCCEnv::set_vm(JavaVM *vm, JNIEnv *vm_env) +{ + this->vm = vm; + set_vm_env(vm_env); + + _sys = (jclass) vm_env->NewGlobalRef(vm_env->FindClass("java/lang/System")); + _obj = (jclass) vm_env->NewGlobalRef(vm_env->FindClass("java/lang/Object")); +#ifdef _jcc_lib + _thr = (jclass) vm_env->NewGlobalRef(vm_env->FindClass("org/apache/jcc/PythonException")); +#else + _thr = (jclass) vm_env->NewGlobalRef(vm_env->FindClass("java/lang/RuntimeException")); +#endif + _mids = new jmethodID[max_mid]; + + _mids[mid_sys_identityHashCode] = + vm_env->GetStaticMethodID(_sys, "identityHashCode", + "(Ljava/lang/Object;)I"); + _mids[mid_sys_setProperty] = + vm_env->GetStaticMethodID(_sys, "setProperty", + "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); + _mids[mid_sys_getProperty] = + vm_env->GetStaticMethodID(_sys, "getProperty", + "(Ljava/lang/String;)Ljava/lang/String;"); + _mids[mid_obj_toString] = + vm_env->GetMethodID(_obj, "toString", + "()Ljava/lang/String;"); + _mids[mid_obj_hashCode] = + vm_env->GetMethodID(_obj, "hashCode", + "()I"); + _mids[mid_obj_getClass] = + vm_env->GetMethodID(_obj, "getClass", + "()Ljava/lang/Class;"); + + _mids[mid_iterator_next] = + vm_env->GetMethodID(vm_env->FindClass("java/util/Iterator"), + "next", "()Ljava/lang/Object;"); + _mids[mid_enumeration_nextElement] = + vm_env->GetMethodID(vm_env->FindClass("java/util/Enumeration"), + "nextElement", "()Ljava/lang/Object;"); +} + +#if defined(_MSC_VER) || defined(__WIN32) + +void JCCEnv::set_vm_env(JNIEnv *vm_env) +{ + if (!VM_ENV) + VM_ENV = TlsAlloc(); + TlsSetValue(VM_ENV, (LPVOID) vm_env); +} + +#else + +void JCCEnv::set_vm_env(JNIEnv *vm_env) +{ + if (!VM_ENV) + pthread_key_create(&VM_ENV, NULL); + pthread_setspecific(VM_ENV, (void *) vm_env); +} + +#endif + +jint JCCEnv::getJNIVersion() const +{ + return get_vm_env()->GetVersion(); +} + +jstring JCCEnv::getJavaVersion() const +{ + return (jstring) + callStaticObjectMethod(_sys, _mids[mid_sys_getProperty], + get_vm_env()->NewStringUTF("java.version")); +} + +jobject JCCEnv::iteratorNext(jobject obj) const +{ + return callObjectMethod(obj, _mids[mid_iterator_next]); +} + +jobject JCCEnv::enumerationNext(jobject obj) const +{ + return callObjectMethod(obj, _mids[mid_enumeration_nextElement]); +} + +jclass JCCEnv::findClass(const char *className) const +{ + jclass cls = NULL; + + if (vm) + { + JNIEnv *vm_env = get_vm_env(); + + if (vm_env) + cls = vm_env->FindClass(className); +#ifdef PYTHON + else + { + PythonGIL gil; + + PyErr_SetString(PyExc_RuntimeError, "attachCurrentThread() must be called first"); + throw pythonError(NULL); + } +#else + else + throw exception(NULL); +#endif + } +#ifdef PYTHON + else + { + PythonGIL gil; + + PyErr_SetString(PyExc_RuntimeError, "initVM() must be called first"); + throw pythonError(NULL); + } +#else + else + throw exception(NULL); +#endif + + reportException(); + + return cls; +} + +void JCCEnv::registerNatives(jclass cls, JNINativeMethod *methods, int n) const +{ + get_vm_env()->RegisterNatives(cls, methods, n); +} + +jobject JCCEnv::newGlobalRef(jobject obj, int id) +{ + if (obj) + { + if (id) /* zero when weak global ref is desired */ + { + lock locked; + + for (std::multimap::iterator iter = refs.find(id); + iter != refs.end(); + iter++) { + if (iter->first != id) + break; + if (isSame(obj, iter->second.global)) + { + /* If it's in the table but not the same reference, + * it must be a local reference and must be deleted. + */ + if (obj != iter->second.global) + get_vm_env()->DeleteLocalRef(obj); + + iter->second.count += 1; + return iter->second.global; + } + } + + JNIEnv *vm_env = get_vm_env(); + countedRef ref; + + ref.global = vm_env->NewGlobalRef(obj); + ref.count = 1; + refs.insert(std::pair(id, ref)); + vm_env->DeleteLocalRef(obj); + + return ref.global; + } + else + return (jobject) get_vm_env()->NewWeakGlobalRef(obj); + } + + return NULL; +} + +jobject JCCEnv::deleteGlobalRef(jobject obj, int id) +{ + if (obj) + { + if (id) /* zero when obj is weak global ref */ + { + lock locked; + + for (std::multimap::iterator iter = refs.find(id); + iter != refs.end(); + iter++) { + if (iter->first != id) + break; + if (isSame(obj, iter->second.global)) + { + if (iter->second.count == 1) + { + get_vm_env()->DeleteGlobalRef(iter->second.global); + refs.erase(iter); + } + else + iter->second.count -= 1; + + return NULL; + } + } + + printf("deleting non-existent ref: 0x%x\n", id); + } + else + get_vm_env()->DeleteWeakGlobalRef((jweak) obj); + } + + return NULL; +} + +jobject JCCEnv::newObject(jclass (*initializeClass)(), jmethodID **mids, + int m, ...) +{ + jclass cls = (*initializeClass)(); + JNIEnv *vm_env = get_vm_env(); + jobject obj; + + if (vm_env) + { + va_list ap; + + va_start(ap, m); + obj = vm_env->NewObjectV(cls, (*mids)[m], ap); + va_end(ap); + } +#ifdef PYTHON + else + { + PythonGIL gil; + + PyErr_SetString(PyExc_RuntimeError, "attachCurrentThread() must be called first"); + throw pythonError(NULL); + } +#else + else + throw exception(NULL); +#endif + + reportException(); + + return obj; +} + +jobjectArray JCCEnv::newObjectArray(jclass cls, int size) +{ + jobjectArray array = get_vm_env()->NewObjectArray(size, cls, NULL); + + reportException(); + return array; +} + +void JCCEnv::setObjectArrayElement(jobjectArray array, int n, + jobject obj) const +{ + get_vm_env()->SetObjectArrayElement(array, n, obj); + reportException(); +} + +jobject JCCEnv::getObjectArrayElement(jobjectArray array, int n) const +{ + jobject obj = get_vm_env()->GetObjectArrayElement(array, n); + + reportException(); + return obj; +} + +int JCCEnv::getArrayLength(jarray array) const +{ + int len = get_vm_env()->GetArrayLength(array); + + reportException(); + return len; +} + +#ifdef PYTHON +jclass JCCEnv::getPythonExceptionClass() const +{ + return _thr; +} +#endif + +void JCCEnv::reportException() const +{ + JNIEnv *vm_env = get_vm_env(); + jthrowable throwable = vm_env->ExceptionOccurred(); + + if (throwable) + { + if (!env->handlers) + vm_env->ExceptionDescribe(); + + vm_env->ExceptionClear(); + +#ifdef PYTHON + PythonGIL gil; + + if (PyErr_Occurred()) + { + /* _thr is PythonException ifdef _jcc_lib (shared mode) + * if not shared mode, _thr is RuntimeException + */ + jobject cls = (jobject) vm_env->GetObjectClass(throwable); + + if (vm_env->IsSameObject(cls, _thr)) + throw pythonError(throwable); + } +#endif + + throw exception(throwable); + } +} + + +#define DEFINE_CALL(jtype, Type) \ + jtype JCCEnv::call##Type##Method(jobject obj, \ + jmethodID mid, ...) const \ + { \ + va_list ap; \ + jtype result; \ + \ + va_start(ap, mid); \ + result = get_vm_env()->Call##Type##MethodV(obj, mid, ap); \ + va_end(ap); \ + \ + reportException(); \ + \ + return result; \ + } + +#define DEFINE_NONVIRTUAL_CALL(jtype, Type) \ + jtype JCCEnv::callNonvirtual##Type##Method(jobject obj, jclass cls, \ + jmethodID mid, ...) const \ + { \ + va_list ap; \ + jtype result; \ + \ + va_start(ap, mid); \ + result = get_vm_env()->CallNonvirtual##Type##MethodV(obj, cls, \ + mid, ap); \ + va_end(ap); \ + \ + reportException(); \ + \ + return result; \ + } + +#define DEFINE_STATIC_CALL(jtype, Type) \ + jtype JCCEnv::callStatic##Type##Method(jclass cls, \ + jmethodID mid, ...) const \ + { \ + va_list ap; \ + jtype result; \ + \ + va_start(ap, mid); \ + result = get_vm_env()->CallStatic##Type##MethodV(cls, mid, ap); \ + va_end(ap); \ + \ + reportException(); \ + \ + return result; \ + } + +DEFINE_CALL(jobject, Object) +DEFINE_CALL(jboolean, Boolean) +DEFINE_CALL(jbyte, Byte) +DEFINE_CALL(jchar, Char) +DEFINE_CALL(jdouble, Double) +DEFINE_CALL(jfloat, Float) +DEFINE_CALL(jint, Int) +DEFINE_CALL(jlong, Long) +DEFINE_CALL(jshort, Short) + +DEFINE_NONVIRTUAL_CALL(jobject, Object) +DEFINE_NONVIRTUAL_CALL(jboolean, Boolean) +DEFINE_NONVIRTUAL_CALL(jbyte, Byte) +DEFINE_NONVIRTUAL_CALL(jchar, Char) +DEFINE_NONVIRTUAL_CALL(jdouble, Double) +DEFINE_NONVIRTUAL_CALL(jfloat, Float) +DEFINE_NONVIRTUAL_CALL(jint, Int) +DEFINE_NONVIRTUAL_CALL(jlong, Long) +DEFINE_NONVIRTUAL_CALL(jshort, Short) + +DEFINE_STATIC_CALL(jobject, Object) +DEFINE_STATIC_CALL(jboolean, Boolean) +DEFINE_STATIC_CALL(jbyte, Byte) +DEFINE_STATIC_CALL(jchar, Char) +DEFINE_STATIC_CALL(jdouble, Double) +DEFINE_STATIC_CALL(jfloat, Float) +DEFINE_STATIC_CALL(jint, Int) +DEFINE_STATIC_CALL(jlong, Long) +DEFINE_STATIC_CALL(jshort, Short) + +void JCCEnv::callVoidMethod(jobject obj, jmethodID mid, ...) const +{ + va_list ap; + + va_start(ap, mid); + get_vm_env()->CallVoidMethodV(obj, mid, ap); + va_end(ap); + + reportException(); +} + +void JCCEnv::callNonvirtualVoidMethod(jobject obj, jclass cls, + jmethodID mid, ...) const +{ + va_list ap; + + va_start(ap, mid); + get_vm_env()->CallNonvirtualVoidMethodV(obj, cls, mid, ap); + va_end(ap); + + reportException(); +} + +void JCCEnv::callStaticVoidMethod(jclass cls, jmethodID mid, ...) const +{ + va_list ap; + + va_start(ap, mid); + get_vm_env()->CallStaticVoidMethodV(cls, mid, ap); + va_end(ap); + + reportException(); +} + + +jmethodID JCCEnv::getMethodID(jclass cls, const char *name, + const char *signature) const +{ + jmethodID id = get_vm_env()->GetMethodID(cls, name, signature); + + reportException(); + + return id; +} + +jfieldID JCCEnv::getFieldID(jclass cls, const char *name, + const char *signature) const +{ + jfieldID id = get_vm_env()->GetFieldID(cls, name, signature); + + reportException(); + + return id; +} + + +jmethodID JCCEnv::getStaticMethodID(jclass cls, const char *name, + const char *signature) const +{ + jmethodID id = get_vm_env()->GetStaticMethodID(cls, name, signature); + + reportException(); + + return id; +} + +jobject JCCEnv::getStaticObjectField(jclass cls, const char *name, + const char *signature) const +{ + JNIEnv *vm_env = get_vm_env(); + jfieldID id = vm_env->GetStaticFieldID(cls, name, signature); + + reportException(); + + return vm_env->GetStaticObjectField(cls, id); +} + +#define DEFINE_GET_STATIC_FIELD(jtype, Type, signature) \ + jtype JCCEnv::getStatic##Type##Field(jclass cls, \ + const char *name) const \ + { \ + JNIEnv *vm_env = get_vm_env(); \ + jfieldID id = vm_env->GetStaticFieldID(cls, name, #signature); \ + reportException(); \ + return vm_env->GetStatic##Type##Field(cls, id); \ + } + +DEFINE_GET_STATIC_FIELD(jboolean, Boolean, Z) +DEFINE_GET_STATIC_FIELD(jbyte, Byte, B) +DEFINE_GET_STATIC_FIELD(jchar, Char, C) +DEFINE_GET_STATIC_FIELD(jdouble, Double, D) +DEFINE_GET_STATIC_FIELD(jfloat, Float, F) +DEFINE_GET_STATIC_FIELD(jint, Int, I) +DEFINE_GET_STATIC_FIELD(jlong, Long, J) +DEFINE_GET_STATIC_FIELD(jshort, Short, S) + +#define DEFINE_GET_FIELD(jtype, Type) \ + jtype JCCEnv::get##Type##Field(jobject obj, jfieldID id) const \ + { \ + jtype value = get_vm_env()->Get##Type##Field(obj, id); \ + reportException(); \ + return value; \ + } + +DEFINE_GET_FIELD(jobject, Object) +DEFINE_GET_FIELD(jboolean, Boolean) +DEFINE_GET_FIELD(jbyte, Byte) +DEFINE_GET_FIELD(jchar, Char) +DEFINE_GET_FIELD(jdouble, Double) +DEFINE_GET_FIELD(jfloat, Float) +DEFINE_GET_FIELD(jint, Int) +DEFINE_GET_FIELD(jlong, Long) +DEFINE_GET_FIELD(jshort, Short) + +#define DEFINE_SET_FIELD(jtype, Type) \ + void JCCEnv::set##Type##Field(jobject obj, jfieldID id, \ + jtype value) const \ + { \ + get_vm_env()->Set##Type##Field(obj, id, value); \ + reportException(); \ + } + +DEFINE_SET_FIELD(jobject, Object) +DEFINE_SET_FIELD(jboolean, Boolean) +DEFINE_SET_FIELD(jbyte, Byte) +DEFINE_SET_FIELD(jchar, Char) +DEFINE_SET_FIELD(jdouble, Double) +DEFINE_SET_FIELD(jfloat, Float) +DEFINE_SET_FIELD(jint, Int) +DEFINE_SET_FIELD(jlong, Long) +DEFINE_SET_FIELD(jshort, Short) + +void JCCEnv::setClassPath(const char *classPath) +{ + JNIEnv *vm_env = get_vm_env(); + jclass _ucl = (jclass) vm_env->FindClass("java/net/URLClassLoader"); + jclass _fil = (jclass) vm_env->FindClass("java/io/File"); + jmethodID mid = vm_env->GetStaticMethodID(_ucl, "getSystemClassLoader", + "()Ljava/lang/ClassLoader;"); + jobject classLoader = vm_env->CallStaticObjectMethod(_ucl, mid); + jmethodID mf = vm_env->GetMethodID(_fil, "", "(Ljava/lang/String;)V"); + jmethodID mu = vm_env->GetMethodID(_fil, "toURL", "()Ljava/net/URL;"); + jmethodID ma = vm_env->GetMethodID(_ucl, "addURL", "(Ljava/net/URL;)V"); +#ifdef WINDOWS + char *pathsep = ";"; +#else + char *pathsep = ":"; +#endif + char *path = strdup(classPath); + + for (char *cp = strtok(path, pathsep); + cp != NULL; + cp = strtok(NULL, pathsep)) { + jstring string = vm_env->NewStringUTF(cp); + jobject file = vm_env->NewObject(_fil, mf, string); + jobject url = vm_env->CallObjectMethod(file, mu); + + vm_env->CallVoidMethod(classLoader, ma, url); + } + free(path); +} + +jstring JCCEnv::fromUTF(const char *bytes) const +{ + jstring str = get_vm_env()->NewStringUTF(bytes); + + reportException(); + + return str; +} + +char *JCCEnv::toUTF(jstring str) const +{ + JNIEnv *vm_env = get_vm_env(); + int len = vm_env->GetStringUTFLength(str); + char *bytes = new char[len + 1]; + jboolean isCopy = 0; + const char *utf = vm_env->GetStringUTFChars(str, &isCopy); + + if (!bytes) + return NULL; + + memcpy(bytes, utf, len); + bytes[len] = '\0'; + + vm_env->ReleaseStringUTFChars(str, utf); + + return bytes; +} + +char *JCCEnv::toString(jobject obj) const +{ + return obj + ? toUTF((jstring) callObjectMethod(obj, _mids[mid_obj_toString])) + : NULL; +} + +char *JCCEnv::getClassName(jobject obj) const +{ + return obj + ? toString(callObjectMethod(obj, _mids[mid_obj_getClass])) + : NULL; +} + +#ifdef PYTHON + +jstring JCCEnv::fromPyString(PyObject *object) const +{ + if (object == Py_None) + return NULL; + + if (PyUnicode_Check(object)) + { + if (sizeof(Py_UNICODE) == sizeof(jchar)) + { + jchar *buf = (jchar *) PyUnicode_AS_UNICODE(object); + jsize len = (jsize) PyUnicode_GET_SIZE(object); + + return get_vm_env()->NewString(buf, len); + } + else + { + jsize len = PyUnicode_GET_SIZE(object); + Py_UNICODE *pchars = PyUnicode_AS_UNICODE(object); + jchar *jchars = new jchar[len]; + jstring str; + + for (int i = 0; i < len; i++) + jchars[i] = (jchar) pchars[i]; + + str = get_vm_env()->NewString(jchars, len); + delete jchars; + + return str; + } + } + else if (PyString_Check(object)) + return fromUTF(PyString_AS_STRING(object)); + else + { + PyObject *tuple = Py_BuildValue("(sO)", "expected a string", object); + + PyErr_SetObject(PyExc_TypeError, tuple); + Py_DECREF(tuple); + + return NULL; + } +} + +PyObject *JCCEnv::fromJString(jstring js, int delete_local_ref) const +{ + if (!js) + Py_RETURN_NONE; + + JNIEnv *vm_env = get_vm_env(); + PyObject *string; + + if (sizeof(Py_UNICODE) == sizeof(jchar)) + { + jboolean isCopy; + const jchar *buf = vm_env->GetStringChars(js, &isCopy); + jsize len = vm_env->GetStringLength(js); + + string = PyUnicode_FromUnicode((const Py_UNICODE *) buf, len); + vm_env->ReleaseStringChars(js, buf); + } + else + { + jsize len = vm_env->GetStringLength(js); + + string = PyUnicode_FromUnicode(NULL, len); + if (string) + { + jboolean isCopy; + const jchar *jchars = vm_env->GetStringChars(js, &isCopy); + Py_UNICODE *pchars = PyUnicode_AS_UNICODE(string); + + for (int i = 0; i < len; i++) + pchars[i] = (Py_UNICODE) jchars[i]; + + vm_env->ReleaseStringChars(js, jchars); + } + } + + if (delete_local_ref) + vm_env->DeleteLocalRef((jobject) js); + + return string; +} + + +/* may be called from finalizer thread which has no vm_env thread local */ +void JCCEnv::finalizeObject(JNIEnv *jenv, PyObject *obj) +{ + PythonGIL gil; + + set_vm_env(jenv); + Py_DECREF(obj); +} + +#endif /* PYTHON */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/JCCEnv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/JCCEnv.h Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,325 @@ +/* + * Copyright (c) 2007-2008 Open Source Applications Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _JCCEnv_H +#define _JCCEnv_H + +#include +#if defined(_MSC_VER) || defined(__WIN32) +#define _DLL_IMPORT __declspec(dllimport) +#define _DLL_EXPORT __declspec(dllexport) +#include +#undef MAX_PRIORITY +#undef MIN_PRIORITY +#else +#include +#define _DLL_IMPORT +#define _DLL_EXPORT +#endif + +#ifdef __SUNPRO_CC +#undef DEFAULT_TYPE +#endif + +#ifdef TRUE +#undef TRUE +#endif +#ifdef FALSE +#undef FALSE +#endif + +#include + +#ifdef PYTHON +#include +#endif + +#undef EOF + +class JCCEnv; + +#if defined(_MSC_VER) || defined(__WIN32) + +#ifdef _jcc_shared +_DLL_IMPORT extern JCCEnv *env; +_DLL_IMPORT extern DWORD VM_ENV; +#else +_DLL_EXPORT extern JCCEnv *env; +_DLL_EXPORT extern DWORD VM_ENV; +#endif + +#else + +extern JCCEnv *env; + +#endif + + +class countedRef { +public: + jobject global; + int count; +}; + +class _DLL_EXPORT JCCEnv { +protected: + jclass _sys, _obj, _thr; + jmethodID *_mids; + + enum { + mid_sys_identityHashCode, + mid_sys_setProperty, + mid_sys_getProperty, + mid_obj_toString, + mid_obj_hashCode, + mid_obj_getClass, + mid_iterator_next, + mid_enumeration_nextElement, + max_mid + }; + +public: + JavaVM *vm; + std::multimap refs; + int handlers; + + class exception { + public: + jthrowable throwable; + exception(jthrowable throwable) { + this->throwable = throwable; + } + }; + +#ifdef PYTHON + class pythonError { + public: + jthrowable throwable; + pythonError(jthrowable throwable) { + this->throwable = throwable; + } + }; +#endif + + explicit JCCEnv(JavaVM *vm, JNIEnv *env); + virtual ~JCCEnv() {}; + +#if defined(_MSC_VER) || defined(__WIN32) + inline JNIEnv *get_vm_env() const + { + return (JNIEnv *) TlsGetValue(VM_ENV); + } +#else + static pthread_key_t VM_ENV; + + inline JNIEnv *get_vm_env() const + { + return (JNIEnv *) pthread_getspecific(VM_ENV); + } +#endif + virtual void set_vm(JavaVM *vm, JNIEnv *vm_env); + virtual void set_vm_env(JNIEnv *vm_env); + + virtual jint getJNIVersion() const; + virtual jstring getJavaVersion() const; + + virtual jclass findClass(const char *className) const; + virtual void registerNatives(jclass cls, JNINativeMethod *methods, + int n) const; + + virtual jobject iteratorNext(jobject obj) const; + virtual jobject enumerationNext(jobject obj) const; + + virtual jobject newGlobalRef(jobject obj, int id); + virtual jobject deleteGlobalRef(jobject obj, int id); + + virtual jobject newObject(jclass (*initializeClass)(), jmethodID **mids, + int m, ...); + + virtual jobjectArray newObjectArray(jclass cls, int size); + virtual void setObjectArrayElement(jobjectArray a, int n, + jobject obj) const; + virtual jobject getObjectArrayElement(jobjectArray a, int n) const; + virtual int getArrayLength(jarray a) const; + + virtual void reportException() const; + + virtual jobject callObjectMethod(jobject obj, jmethodID mid, ...) const; + virtual jboolean callBooleanMethod(jobject obj, jmethodID mid, ...) const; + virtual jbyte callByteMethod(jobject obj, jmethodID mid, ...) const; + virtual jchar callCharMethod(jobject obj, jmethodID mid, ...) const; + virtual jdouble callDoubleMethod(jobject obj, jmethodID mid, ...) const; + virtual jfloat callFloatMethod(jobject obj, jmethodID mid, ...) const; + virtual jint callIntMethod(jobject obj, jmethodID mid, ...) const; + virtual jlong callLongMethod(jobject obj, jmethodID mid, ...) const; + virtual jshort callShortMethod(jobject obj, jmethodID mid, ...) const; + virtual void callVoidMethod(jobject obj, jmethodID mid, ...) const; + + virtual jobject callNonvirtualObjectMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jboolean callNonvirtualBooleanMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jbyte callNonvirtualByteMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jchar callNonvirtualCharMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jdouble callNonvirtualDoubleMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jfloat callNonvirtualFloatMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jint callNonvirtualIntMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jlong callNonvirtualLongMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual jshort callNonvirtualShortMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + virtual void callNonvirtualVoidMethod(jobject obj, jclass cls, + jmethodID mid, ...) const; + + virtual jobject callStaticObjectMethod(jclass cls, + jmethodID mid, ...) const; + virtual jboolean callStaticBooleanMethod(jclass cls, + jmethodID mid, ...) const; + virtual jbyte callStaticByteMethod(jclass cls, + jmethodID mid, ...) const; + virtual jchar callStaticCharMethod(jclass cls, + jmethodID mid, ...) const; + virtual jdouble callStaticDoubleMethod(jclass cls, + jmethodID mid, ...) const; + virtual jfloat callStaticFloatMethod(jclass cls, + jmethodID mid, ...) const; + virtual jint callStaticIntMethod(jclass cls, + jmethodID mid, ...) const; + virtual jlong callStaticLongMethod(jclass cls, + jmethodID mid, ...) const; + virtual jshort callStaticShortMethod(jclass cls, + jmethodID mid, ...) const; + virtual void callStaticVoidMethod(jclass cls, + jmethodID mid, ...) const; + + virtual jmethodID getMethodID(jclass cls, const char *name, + const char *signature) const; + virtual jfieldID getFieldID(jclass cls, const char *name, + const char *signature) const; + virtual jmethodID getStaticMethodID(jclass cls, const char *name, + const char *signature) const; + + virtual jobject getStaticObjectField(jclass cls, const char *name, + const char *signature) const; + virtual jboolean getStaticBooleanField(jclass cls, const char *name) const; + virtual jbyte getStaticByteField(jclass cls, const char *name) const; + virtual jchar getStaticCharField(jclass cls, const char *name) const; + virtual jdouble getStaticDoubleField(jclass cls, const char *name) const; + virtual jfloat getStaticFloatField(jclass cls, const char *name) const; + virtual jint getStaticIntField(jclass cls, const char *name) const; + virtual jlong getStaticLongField(jclass cls, const char *name) const; + virtual jshort getStaticShortField(jclass cls, const char *name) const; + + virtual jobject getObjectField(jobject obj, jfieldID id) const; + virtual jboolean getBooleanField(jobject obj, jfieldID id) const; + virtual jbyte getByteField(jobject obj, jfieldID id) const; + virtual jchar getCharField(jobject obj, jfieldID id) const; + virtual jdouble getDoubleField(jobject obj, jfieldID id) const; + virtual jfloat getFloatField(jobject obj, jfieldID id) const; + virtual jint getIntField(jobject obj, jfieldID id) const; + virtual jlong getLongField(jobject obj, jfieldID id) const; + virtual jshort getShortField(jobject obj, jfieldID id) const; + + virtual void setObjectField(jobject obj, jfieldID id, jobject value) const; + virtual void setBooleanField(jobject obj, jfieldID id, jboolean value) const; + virtual void setByteField(jobject obj, jfieldID id, jbyte value) const; + virtual void setCharField(jobject obj, jfieldID id, jchar value) const; + virtual void setDoubleField(jobject obj, jfieldID id, jdouble value) const; + virtual void setFloatField(jobject obj, jfieldID id, jfloat value) const; + virtual void setIntField(jobject obj, jfieldID id, jint value) const; + virtual void setLongField(jobject obj, jfieldID id, jlong value) const; + virtual void setShortField(jobject obj, jfieldID id, jshort value) const; + + int id(jobject obj) const { + return obj + ? get_vm_env()->CallStaticIntMethod(_sys, + _mids[mid_sys_identityHashCode], + obj) + : 0; + } + + int hash(jobject obj) const { + return obj + ? get_vm_env()->CallIntMethod(obj, _mids[mid_obj_hashCode]) + : 0; + } + + virtual void setClassPath(const char *classPath); + + virtual jstring fromUTF(const char *bytes) const; + virtual char *toUTF(jstring str) const; + virtual char *toString(jobject obj) const; + virtual char *getClassName(jobject obj) const; +#ifdef PYTHON + virtual jclass getPythonExceptionClass() const; + virtual jstring fromPyString(PyObject *object) const; + virtual PyObject *fromJString(jstring js, int delete_local_ref) const; + virtual void finalizeObject(JNIEnv *jenv, PyObject *obj); +#endif + + virtual inline int isSame(jobject o1, jobject o2) const + { + return o1 == o2 || get_vm_env()->IsSameObject(o1, o2); + } +}; + +#ifdef PYTHON + +class PythonGIL { + private: + PyGILState_STATE state; + public: + PythonGIL() + { + state = PyGILState_Ensure(); + } + PythonGIL(JNIEnv *vm_env) + { + state = PyGILState_Ensure(); + env->set_vm_env(vm_env); + } + ~PythonGIL() + { + PyGILState_Release(state); + } +}; + +class PythonThreadState { + private: + PyThreadState *state; + int handler; + public: + PythonThreadState(int handler=0) + { + state = PyEval_SaveThread(); + this->handler = handler; + env->handlers += handler; + } + ~PythonThreadState() + { + PyEval_RestoreThread(state); + env->handlers -= handler; + } +}; + +#endif + +#endif /* _JCCEnv_H */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/JObject.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/JObject.cpp Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,186 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "JCCEnv.h" + +#ifdef PYTHON + +#include +#include "structmember.h" + +#include "JObject.h" +#include "macros.h" + + +/* JObject */ + +static void t_JObject_dealloc(t_JObject *self); +static PyObject *t_JObject_new(PyTypeObject *type, + PyObject *args, PyObject *kwds); + +static PyObject *t_JObject_richcmp(t_JObject *, PyObject *o2, int op); +static PyObject *t_JObject_str(t_JObject *self); +static PyObject *t_JObject_repr(t_JObject *self); +static int t_JObject_hash(t_JObject *self); +static PyObject *t_JObject__getJObject(t_JObject *self, void *data); + +static PyMemberDef t_JObject_members[] = { + { NULL, 0, 0, 0, NULL } +}; + +static PyMethodDef t_JObject_methods[] = { + { NULL, NULL, 0, NULL } +}; + +static PyGetSetDef t_JObject_properties[] = { + { "_jobject", (getter) t_JObject__getJObject, NULL, NULL, NULL }, + { NULL, NULL, NULL, NULL, NULL } +}; + +PyTypeObject JObject$$Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "jcc.JObject", /* tp_name */ + sizeof(t_JObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)t_JObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc)t_JObject_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)t_JObject_hash, /* tp_hash */ + 0, /* tp_call */ + (reprfunc)t_JObject_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + (Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE), /* tp_flags */ + "t_JObject objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + (richcmpfunc)t_JObject_richcmp, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + t_JObject_methods, /* tp_methods */ + t_JObject_members, /* tp_members */ + t_JObject_properties, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + (newfunc)t_JObject_new, /* tp_new */ +}; + + +static void t_JObject_dealloc(t_JObject *self) +{ + self->object = JObject(NULL); + self->ob_type->tp_free((PyObject *) self); +} + +static PyObject *t_JObject_new(PyTypeObject *type, + PyObject *args, PyObject *kwds) +{ + t_JObject *self = (t_JObject *) type->tp_alloc(type, 0); + + self->object = JObject(NULL); + + return (PyObject *) self; +} + +static PyObject *t_JObject_richcmp(t_JObject *self, PyObject *arg, int op) +{ + int b = 0; + + switch (op) { + case Py_EQ: + case Py_NE: + if (PyObject_TypeCheck(arg, &JObject$$Type)) + b = self->object == ((t_JObject *) arg)->object; + if (op == Py_EQ) + Py_RETURN_BOOL(b); + Py_RETURN_BOOL(!b); + case Py_LT: + PyErr_SetString(PyExc_NotImplementedError, "<"); + return NULL; + case Py_LE: + PyErr_SetString(PyExc_NotImplementedError, "<="); + return NULL; + case Py_GT: + PyErr_SetString(PyExc_NotImplementedError, ">"); + return NULL; + case Py_GE: + PyErr_SetString(PyExc_NotImplementedError, ">="); + return NULL; + } + + return NULL; +} + +static PyObject *t_JObject_str(t_JObject *self) +{ + if (self->object.this$) + { + char *utf = env->toString(self->object.this$); + PyObject *unicode = PyUnicode_DecodeUTF8(utf, strlen(utf), "strict"); + + delete utf; + return unicode; + } + + return PyString_FromString(""); +} + +static PyObject *t_JObject_repr(t_JObject *self) +{ + PyObject *name = PyObject_GetAttrString((PyObject *) self->ob_type, + "__name__"); + PyObject *str = self->ob_type->tp_str((PyObject *) self); +#if PY_VERSION_HEX < 0x02040000 + PyObject *args = Py_BuildValue("(OO)", name, str); +#else + PyObject *args = PyTuple_Pack(2, name, str); +#endif + PyObject *format = PyString_FromString("<%s: %s>"); + PyObject *repr = PyString_Format(format, args); + + Py_DECREF(name); + Py_DECREF(str); + Py_DECREF(args); + Py_DECREF(format); + + return repr; +} + +static int t_JObject_hash(t_JObject *self) +{ + return env->hash(self->object.this$); +} + +static PyObject *t_JObject__getJObject(t_JObject *self, void *data) +{ + return PyCObject_FromVoidPtr((void *) self->object.this$, NULL); +} + +#endif /* PYTHON */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/JObject.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/JObject.h Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2007-2008 Open Source Applications Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _JObject_H +#define _JObject_H + +#include +#include "JCCEnv.h" + +class JObject { +public: + jobject this$; + int id; /* zero when this$ is a weak ref */ + + inline explicit JObject(jobject obj) + { + if (obj) + { + id = env->id(obj); + this$ = env->newGlobalRef(obj, id); + } + else + { + id = 0; + this$ = NULL; + } + } + + inline JObject(const JObject& obj) + { + id = obj.id ? obj.id : env->id(obj.this$); + this$ = env->newGlobalRef(obj.this$, id); + } + + virtual ~JObject() + { + this$ = env->deleteGlobalRef(this$, id); + } + + JObject& weaken$() + { + if (id) + { + jobject ref = env->newGlobalRef(this$, 0); + + env->deleteGlobalRef(this$, id); + id = 0; + this$ = ref; + } + + return *this; + } + + inline int operator!() const + { + return env->isSame(this$, NULL); + } + + inline int operator==(const JObject& obj) const + { + return env->isSame(this$, obj.this$); + } + + JObject& operator=(const JObject& obj) + { + jobject prev = this$; + int objid = obj.id ? obj.id : env->id(obj.this$); + + this$ = env->newGlobalRef(obj.this$, objid); + env->deleteGlobalRef(prev, id); + id = objid; + + return *this; + } +}; + + +#ifdef PYTHON + +#include + +class t_JObject { +public: + PyObject_HEAD + JObject object; +}; + +extern PyTypeObject JObject$$Type; + +#endif /* PYTHON */ + + +#endif /* _JObject_H */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/functions.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/functions.cpp Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,1272 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "java/lang/Object.h" +#include "java/lang/Class.h" +#include "java/lang/String.h" +#include "java/lang/Throwable.h" +#include "java/lang/Boolean.h" +#include "java/lang/Integer.h" +#include "java/lang/Long.h" +#include "java/lang/Double.h" +#include "java/util/Iterator.h" +#include "JArray.h" +#include "functions.h" +#include "macros.h" + +using namespace java::lang; +using namespace java::util; + +PyObject *PyExc_JavaError = PyExc_ValueError; +PyObject *PyExc_InvalidArgsError = PyExc_ValueError; + +PyObject *_set_exception_types(PyObject *self, PyObject *args) +{ + if (!PyArg_ParseTuple(args, "OO", + &PyExc_JavaError, &PyExc_InvalidArgsError)) + return NULL; + + Py_RETURN_NONE; +} + +PyObject *_set_function_self(PyObject *self, PyObject *args) +{ + PyObject *object, *module; + + if (!PyArg_ParseTuple(args, "OO", &object, &module)) + return NULL; + + if (!PyCFunction_Check(object)) + { + PyErr_SetObject(PyExc_TypeError, object); + return NULL; + } + + PyCFunctionObject *cfn = (PyCFunctionObject *) object; + + Py_INCREF(module); + Py_XDECREF(cfn->m_self); + cfn->m_self = module; + + Py_RETURN_NONE; +} + +PyObject *findClass(PyObject *self, PyObject *args) +{ + char *className; + + if (!PyArg_ParseTuple(args, "s", &className)) + return NULL; + + try { + jclass cls = env->findClass(className); + + if (cls) + return t_Class::wrap_Object(Class(cls)); + } catch (JCCEnv::pythonError e) { + return NULL; + } catch (JCCEnv::exception e) { + PyErr_SetJavaError(e.throwable); + return NULL; + } + + Py_RETURN_NONE; +} + + +#if defined(_MSC_VER) || defined(__SUNPRO_CC) +int __parseArgs(PyObject *args, char *types, ...) +{ + int count = ((PyTupleObject *)(args))->ob_size; + va_list list, check; + + va_start(list, types); + va_start(check, types); + + return _parseArgs(((PyTupleObject *)(args))->ob_item, count, types, + list, check); +} + +int __parseArg(PyObject *arg, char *types, ...) +{ + va_list list, check; + + va_start(list, types); + va_start(check, types); + + return _parseArgs(&arg, 1, types, list, check); +} + +int _parseArgs(PyObject **args, unsigned int count, char *types, + va_list list, va_list check) +{ + unsigned int typeCount = strlen(types); + + if (count > typeCount) + return -1; +#else + +int _parseArgs(PyObject **args, unsigned int count, char *types, ...) +{ + unsigned int typeCount = strlen(types); + va_list list, check; + + if (count > typeCount) + return -1; + + va_start(list, types); + va_start(check, types); +#endif + + if (!env->vm) + { + PyErr_SetString(PyExc_RuntimeError, "initVM() must be called first"); + return -1; + } + + JNIEnv *vm_env = env->get_vm_env(); + + if (!vm_env) + { + PyErr_SetString(PyExc_RuntimeError, "attachCurrentThread() must be called first"); + return -1; + } + + unsigned int pos = 0; + int array = 0; + + for (unsigned int a = 0; a < count; a++, pos++) { + PyObject *arg = args[a]; + + switch (types[pos]) { + case '[': + { + if (++array > 1) + return -1; + + a -= 1; + break; + } + + case 'j': /* Java object, with class$ */ + case 'k': /* Java object, with initializeClass */ + case 'K': /* Java object, with initializeClass and params */ + { + jclass cls = NULL; + + switch (types[pos]) { + case 'j': + cls = (jclass) va_arg(list, Class *)->this$; + break; + case 'k': + case 'K': + try { + getclassfn initializeClass = va_arg(list, getclassfn); + cls = (*initializeClass)(); + } catch (JCCEnv::pythonError e) { + return -1; + } catch (JCCEnv::exception e) { + PyErr_SetJavaError(e.throwable); + return -1; + } + break; + } + + if (arg == Py_None) + break; + + /* ensure that class Class is initialized (which may not be the + * case because of earlier recursion avoidance (JObject(cls)). + */ + if (!Class::class$) + Class::initializeClass(); + + if (array) + { + if (PyObject_TypeCheck(arg, JArrayObject$$Type)) + break; + + if (PySequence_Check(arg) && + !PyString_Check(arg) && !PyUnicode_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = 0; + + if (obj == Py_None) + ok = 1; + else if (PyObject_TypeCheck(obj, &Object$$Type) && + vm_env->IsInstanceOf(((t_Object *) obj)->object.this$, cls)) + ok = 1; + else if (PyObject_TypeCheck(obj, &FinalizerProxy$$Type)) + { + PyObject *o = ((t_fp *) obj)->object; + + if (PyObject_TypeCheck(o, &Object$$Type) && + vm_env->IsInstanceOf(((t_Object *) o)->object.this$, cls)) + ok = 1; + } + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (PyObject_TypeCheck(arg, &Object$$Type) && + vm_env->IsInstanceOf(((t_Object *) arg)->object.this$, cls)) + break; + else if (PyObject_TypeCheck(arg, &FinalizerProxy$$Type)) + { + arg = ((t_fp *) arg)->object; + if (PyObject_TypeCheck(arg, &Object$$Type) && + vm_env->IsInstanceOf(((t_Object *) arg)->object.this$, cls)) + break; + } + + return -1; + } + + case 'Z': /* boolean, strict */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayBool$$Type)) + break; + + if (PySequence_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = obj == Py_True || obj == Py_False; + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (arg == Py_True || arg == Py_False) + break; + + return -1; + } + + case 'B': /* byte */ + { + if (array) + { + if (arg == Py_None) + break; + if (PyObject_TypeCheck(arg, JArrayByte$$Type)) + break; + } + else if (PyString_Check(arg) && (PyString_Size(arg) == 1)) + break; + else if (PyInt_CheckExact(arg)) + break; + + return -1; + } + + case 'C': /* char */ + { + if (array) + { + if (arg == Py_None) + break; + if (PyObject_TypeCheck(arg, JArrayChar$$Type)) + break; + } + else if (PyUnicode_Check(arg) && PyUnicode_GET_SIZE(arg) == 1) + break; + return -1; + } + + case 'I': /* int */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayInt$$Type)) + break; + + if (PySequence_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = PyInt_CheckExact(obj); + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (PyInt_CheckExact(arg)) + break; + + return -1; + } + + case 'S': /* short */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayShort$$Type)) + break; + + if (PySequence_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = PyInt_CheckExact(obj); + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (PyInt_CheckExact(arg)) + break; + + return -1; + } + + case 'D': /* double */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayDouble$$Type)) + break; + + if (PySequence_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = PyFloat_CheckExact(obj); + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (PyFloat_CheckExact(arg)) + break; + + return -1; + } + + case 'F': /* float */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayFloat$$Type)) + break; + + if (PySequence_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = PyFloat_CheckExact(obj); + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (PyFloat_CheckExact(arg)) + break; + + return -1; + } + + case 'J': /* long long */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayLong$$Type)) + break; + + if (PySequence_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = PyLong_CheckExact(obj); + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (PyLong_CheckExact(arg)) + break; + + return -1; + } + + case 's': /* string */ + { + if (array) + { + if (arg == Py_None) + break; + + if (PyObject_TypeCheck(arg, JArrayString$$Type)) + break; + + if (PySequence_Check(arg) && + !PyString_Check(arg) && !PyUnicode_Check(arg)) + { + if (PySequence_Length(arg) > 0) + { + PyObject *obj = PySequence_GetItem(arg, 0); + int ok = + (obj == Py_None || + PyString_Check(obj) || PyUnicode_Check(obj)); + + Py_DECREF(obj); + if (ok) + break; + } + else + break; + } + } + else if (arg == Py_None || + PyString_Check(arg) || PyUnicode_Check(arg)) + break; + + return -1; + } + + case 'o': /* java.lang.Object */ + break; + + default: + return -1; + } + + if (types[pos] != '[') + array = 0; + } + + if (array) + return -1; + + pos = 0; + + for (unsigned int a = 0; a < count; a++, pos++) { + PyObject *arg = args[a]; + + switch (types[pos]) { + case '[': + { + if (++array > 1) + return -1; + + a -= 1; + break; + } + + case 'j': /* Java object except String and Object */ + case 'k': /* Java object, with initializeClass */ + case 'K': /* Java object, with initializeClass and params */ + { + jclass cls = NULL; + + switch (types[pos]) { + case 'j': + cls = (jclass) va_arg(check, Class *)->this$; + break; + case 'k': + case 'K': + getclassfn initializeClass = va_arg(check, getclassfn); + cls = (*initializeClass)(); + } + + if (array) + { + JArray *array = va_arg(list, JArray *); + +#ifdef _java_generics + if (types[pos] == 'K') + { + PyTypeObject ***tp = va_arg(list, PyTypeObject ***); + + va_arg(list, getparametersfn); + *tp = NULL; + } +#endif + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayObject$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(cls, arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + Object *obj = va_arg(list, Object *); + + if (PyObject_TypeCheck(arg, &FinalizerProxy$$Type)) + arg = ((t_fp *) arg)->object; + +#ifdef _java_generics + if (types[pos] == 'K') + { + PyTypeObject ***tp = va_arg(list, PyTypeObject ***); + PyTypeObject **(*parameters_)(void *) = + va_arg(list, getparametersfn); + + if (arg == Py_None) + *tp = NULL; + else + *tp = (*parameters_)(arg); + } +#endif + + *obj = arg == Py_None + ? Object(NULL) + : ((t_Object *) arg)->object; + } + break; + } + + case 'Z': /* boolean, strict */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayBool$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jboolean *b = va_arg(list, jboolean *); + *b = arg == Py_True; + } + break; + } + + case 'B': /* byte */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayByte$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else if (PyString_Check(arg)) + { + jbyte *a = va_arg(list, jbyte *); + *a = (jbyte) PyString_AS_STRING(arg)[0]; + } + else + { + jbyte *a = va_arg(list, jbyte *); + *a = (jbyte) PyInt_AsLong(arg); + } + break; + } + + case 'C': /* char */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayChar$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jchar *c = va_arg(list, jchar *); + *c = (jchar) PyUnicode_AS_UNICODE(arg)[0]; + } + break; + } + + case 'I': /* int */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayInt$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jint *n = va_arg(list, jint *); + *n = (jint) PyInt_AsLong(arg); + } + break; + } + + case 'S': /* short */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayShort$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jshort *n = va_arg(list, jshort *); + *n = (jshort) PyInt_AsLong(arg); + } + break; + } + + case 'D': /* double */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayDouble$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jdouble *d = va_arg(list, jdouble *); + *d = (jdouble) PyFloat_AsDouble(arg); + } + break; + } + + case 'F': /* float */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayFloat$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jfloat *d = va_arg(list, jfloat *); + *d = (jfloat) (float) PyFloat_AsDouble(arg); + } + break; + } + + case 'J': /* long long */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayLong$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + jlong *l = va_arg(list, jlong *); + *l = (jlong) PyLong_AsLongLong(arg); + } + break; + } + + case 's': /* string */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else if (PyObject_TypeCheck(arg, JArrayString$$Type)) + *array = ((t_jarray *) arg)->array; + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + String *str = va_arg(list, String *); + + if (arg == Py_None) + *str = String(NULL); + else + { + *str = p2j(arg); + if (PyErr_Occurred()) + return -1; + } + } + break; + } + + case 'o': /* java.lang.Object */ + { + if (array) + { + JArray *array = va_arg(list, JArray *); + + if (arg == Py_None) + *array = JArray((jobject) NULL); + else + *array = JArray(arg); + + if (PyErr_Occurred()) + return -1; + } + else + { + Object *obj = va_arg(list, Object *); + + if (arg == Py_None) + *obj = Object(NULL); + else if (PyObject_TypeCheck(arg, &Object$$Type)) + *obj = ((t_Object *) arg)->object; + else if (PyObject_TypeCheck(arg, &FinalizerProxy$$Type)) + { + arg = ((t_fp *) arg)->object; + if (PyObject_TypeCheck(arg, &Object$$Type)) + *obj = ((t_Object *) arg)->object; + else + return -1; + } + else if (PyString_Check(arg) || PyUnicode_Check(arg)) + { + *obj = p2j(arg); + if (PyErr_Occurred()) + return -1; + } + else if (arg == Py_True) + *obj = *Boolean::TRUE; + else if (arg == Py_False) + *obj = *Boolean::FALSE; + else if (PyInt_Check(arg)) + { + long ln = PyInt_AS_LONG(arg); + int n = (int) ln; + + if (ln != (long) n) + *obj = Long((jlong) ln); + else + *obj = Integer((jint) n); + } + else if (PyLong_Check(arg)) + *obj = Long((jlong) PyLong_AsLongLong(arg)); + else if (PyFloat_Check(arg)) + *obj = Double((jdouble) PyFloat_AS_DOUBLE(arg)); + else + return -1; + } + break; + } + + default: + return -1; + } + + if (types[pos] != '[') + array = 0; + } + + if (pos == typeCount) + return 0; + + return -1; +} + + +String p2j(PyObject *object) +{ + return String(env->fromPyString(object)); +} + +PyObject *j2p(const String& js) +{ + return env->fromJString((jstring) js.this$, 0); +} + +PyObject *PyErr_SetArgsError(char *name, PyObject *args) +{ + if (!PyErr_Occurred()) + { + PyObject *err = Py_BuildValue("(sO)", name, args); + + PyErr_SetObject(PyExc_InvalidArgsError, err); + Py_DECREF(err); + } + + return NULL; +} + +PyObject *PyErr_SetArgsError(PyObject *self, char *name, PyObject *args) +{ + if (!PyErr_Occurred()) + { + PyObject *type = (PyObject *) self->ob_type; + PyObject *err = Py_BuildValue("(OsO)", type, name, args); + + PyErr_SetObject(PyExc_InvalidArgsError, err); + Py_DECREF(err); + } + + return NULL; +} + +PyObject *PyErr_SetArgsError(PyTypeObject *type, char *name, PyObject *args) +{ + if (!PyErr_Occurred()) + { + PyObject *err = Py_BuildValue("(OsO)", type, name, args); + + PyErr_SetObject(PyExc_InvalidArgsError, err); + Py_DECREF(err); + } + + return NULL; +} + +PyObject *PyErr_SetJavaError(jthrowable throwable) +{ + PyObject *err = t_Throwable::wrap_Object(Throwable(throwable)); + + PyErr_SetObject(PyExc_JavaError, err); + Py_DECREF(err); + + return NULL; +} + +void throwPythonError(void) +{ + PyObject *exc = PyErr_Occurred(); + + if (exc && PyErr_GivenExceptionMatches(exc, PyExc_JavaError)) + { + PyObject *value, *traceback; + + PyErr_Fetch(&exc, &value, &traceback); + if (value) + { + PyObject *je = PyObject_CallMethod(value, "getJavaException", ""); + + if (!je) + PyErr_Restore(exc, value, traceback); + else + { + Py_DECREF(exc); + Py_DECREF(value); + Py_XDECREF(traceback); + exc = je; + + if (exc && PyObject_TypeCheck(exc, &Throwable$$Type)) + { + jobject jobj = ((t_Throwable *) exc)->object.this$; + + env->get_vm_env()->Throw((jthrowable) jobj); + Py_DECREF(exc); + + return; + } + } + } + else + { + Py_DECREF(exc); + Py_XDECREF(traceback); + } + } + else if (exc && PyErr_GivenExceptionMatches(exc, PyExc_StopIteration)) + { + PyErr_Clear(); + return; + } + + if (exc) + { + PyObject *name = PyObject_GetAttrString(exc, "__name__"); + + env->get_vm_env()->ThrowNew(env->getPythonExceptionClass(), + PyString_AS_STRING(name)); + Py_DECREF(name); + } + else + env->get_vm_env()->ThrowNew(env->getPythonExceptionClass(), + "python error"); +} + +void throwTypeError(const char *name, PyObject *object) +{ + PyObject *tuple = Py_BuildValue("(ssO)", "while calling", name, object); + + PyErr_SetObject(PyExc_TypeError, tuple); + Py_DECREF(tuple); + + env->get_vm_env()->ThrowNew(env->getPythonExceptionClass(), "type error"); +} + +int abstract_init(PyObject *self, PyObject *args, PyObject *kwds) +{ + PyObject *err = + Py_BuildValue("(sO)", "instantiating java class", self->ob_type); + + PyErr_SetObject(PyExc_NotImplementedError, err); + Py_DECREF(err); + + return -1; +} + +PyObject *callSuper(PyTypeObject *type, const char *name, PyObject *args, + int cardinality) +{ + PyObject *super = (PyObject *) type->tp_base; + PyObject *method = + PyObject_GetAttrString(super, (char *) name); // python 2.4 cast + PyObject *value; + + if (!method) + return NULL; + + if (cardinality > 1) + value = PyObject_Call(method, args, NULL); + else + { +#if PY_VERSION_HEX < 0x02040000 + PyObject *tuple = Py_BuildValue("(O)", args); +#else + PyObject *tuple = PyTuple_Pack(1, args); +#endif + value = PyObject_Call(method, tuple, NULL); + Py_DECREF(tuple); + } + + Py_DECREF(method); + + return value; +} + +PyObject *callSuper(PyTypeObject *type, PyObject *self, + const char *name, PyObject *args, int cardinality) +{ +#if PY_VERSION_HEX < 0x02040000 + PyObject *tuple = Py_BuildValue("(OO)", type, self); +#else + PyObject *tuple = PyTuple_Pack(2, type, self); +#endif + PyObject *super = PyObject_Call((PyObject *) &PySuper_Type, tuple, NULL); + PyObject *method, *value; + + Py_DECREF(tuple); + if (!super) + return NULL; + + method = PyObject_GetAttrString(super, (char *) name); // python 2.4 cast + Py_DECREF(super); + if (!method) + return NULL; + + if (cardinality > 1) + value = PyObject_Call(method, args, NULL); + else + { +#if PY_VERSION_HEX < 0x02040000 + tuple = Py_BuildValue("(O)", args); +#else + tuple = PyTuple_Pack(1, args); +#endif + value = PyObject_Call(method, tuple, NULL); + Py_DECREF(tuple); + } + + Py_DECREF(method); + + return value; +} + +PyObject *castCheck(PyObject *obj, getclassfn initializeClass, + int reportError) +{ + if (PyObject_TypeCheck(obj, &FinalizerProxy$$Type)) + obj = ((t_fp *) obj)->object; + + if (!PyObject_TypeCheck(obj, &Object$$Type)) + { + if (reportError) + PyErr_SetObject(PyExc_TypeError, obj); + return NULL; + } + + jobject jobj = ((t_Object *) obj)->object.this$; + + if (jobj) + { + jclass cls; + + try { + cls = (*initializeClass)(); + } catch (JCCEnv::pythonError e) { + return NULL; + } catch (JCCEnv::exception e) { + PyErr_SetJavaError(e.throwable); + return NULL; + } + + if (!env->get_vm_env()->IsInstanceOf(jobj, cls)) + { + if (reportError) + PyErr_SetObject(PyExc_TypeError, obj); + + return NULL; + } + } + + return obj; +} + +PyObject *get_extension_iterator(PyObject *self) +{ + return PyObject_CallMethod(self, "iterator", ""); +} + +PyObject *get_extension_next(PyObject *self) +{ + return PyObject_CallMethod(self, "next", ""); +} + +PyObject *get_extension_nextElement(PyObject *self) +{ + return PyObject_CallMethod(self, "nextElement", ""); +} + +jobjectArray fromPySequence(jclass cls, PyObject *sequence) +{ + if (sequence == Py_None) + return NULL; + + if (!PySequence_Check(sequence)) + { + PyErr_SetObject(PyExc_TypeError, sequence); + return NULL; + } + + int length = PySequence_Length(sequence); + jobjectArray array; + + try { + array = env->newObjectArray(cls, length); + } catch (JCCEnv::pythonError) { + return NULL; + } catch (JCCEnv::exception e) { + PyErr_SetJavaError(e.throwable); + return NULL; + } + + JNIEnv *vm_env = env->get_vm_env(); + + for (int i = 0; i < length; i++) { + PyObject *obj = PySequence_GetItem(sequence, i); + int fromString = 0; + jobject jobj; + + if (!obj) + break; + else if (obj == Py_None) + jobj = NULL; + else if (PyString_Check(obj) || PyUnicode_Check(obj)) + { + jobj = env->fromPyString(obj); + fromString = 1; + } + else if (PyObject_TypeCheck(obj, &JObject$$Type)) + jobj = ((t_JObject *) obj)->object.this$; + else if (PyObject_TypeCheck(obj, &FinalizerProxy$$Type)) + jobj = ((t_JObject *) ((t_fp *) obj)->object)->object.this$; + else /* todo: add auto-boxing of primitive types */ + { + PyErr_SetObject(PyExc_TypeError, obj); + Py_DECREF(obj); + return NULL; + } + + Py_DECREF(obj); + + try { + env->setObjectArrayElement(array, i, jobj); + if (fromString) + vm_env->DeleteLocalRef(jobj); + } catch (JCCEnv::exception e) { + PyErr_SetJavaError(e.throwable); + return NULL; + } + } + + return array; +} + +void installType(PyTypeObject *type, PyObject *module, char *name, + int isExtension) +{ + if (PyType_Ready(type) == 0) + { + Py_INCREF(type); + if (isExtension) + { + type->ob_type = &FinalizerClass$$Type; + Py_INCREF(&FinalizerClass$$Type); + } + PyModule_AddObject(module, name, (PyObject *) type); + } +} + +PyObject *wrapType(PyTypeObject *type, const jobject& obj) +{ + PyObject *cobj = PyObject_GetAttrString((PyObject *) type, "wrapfn_"); + PyObject *(*wrapfn)(const jobject&); + + if (cobj == NULL) + return NULL; + + wrapfn = (PyObject *(*)(const jobject &)) PyCObject_AsVoidPtr(cobj); + Py_DECREF(cobj); + + return wrapfn(obj); +} + +#ifdef _java_generics +PyObject *typeParameters(PyTypeObject *types[], size_t size) +{ + size_t count = size / sizeof(PyTypeObject *); + PyObject *tuple = PyTuple_New(count); + + for (size_t i = 0; i < count; i++) { + PyObject *type = (PyObject *) types[i]; + + if (type == NULL) + type = Py_None; + + PyTuple_SET_ITEM(tuple, i, type); + Py_INCREF(type); + } + + return tuple; +} +#endif diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/functions.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/functions.h Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,272 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _functions_h +#define _functions_h + +#include "java/util/Iterator.h" +#include "java/util/Enumeration.h" +#include "java/lang/String.h" +#include "java/lang/Object.h" +#include "macros.h" + +#if PY_VERSION_HEX < 0x02050000 +typedef int Py_ssize_t; +typedef inquiry lenfunc; +typedef intargfunc ssizeargfunc; +typedef intintargfunc ssizessizeargfunc; +typedef intobjargproc ssizeobjargproc; +typedef intintobjargproc ssizessizeobjargproc; +#endif + +typedef jclass (*getclassfn)(void); +typedef PyTypeObject **(*getparametersfn)(void *); + +PyObject *PyErr_SetArgsError(char *name, PyObject *args); +PyObject *PyErr_SetArgsError(PyObject *self, char *name, PyObject *args); +PyObject *PyErr_SetArgsError(PyTypeObject *type, char *name, PyObject *args); +PyObject *PyErr_SetJavaError(jthrowable throwable); + +extern PyObject *PyExc_JavaError; +extern PyObject *PyExc_InvalidArgsError; + + +void throwPythonError(void); +void throwTypeError(const char *name, PyObject *object); + +#if defined(_MSC_VER) || defined(__SUNPRO_CC) + +#define parseArgs __parseArgs +#define parseArg __parseArg + +int __parseArgs(PyObject *args, char *types, ...); +int __parseArg(PyObject *arg, char *types, ...); + +int _parseArgs(PyObject **args, unsigned int count, char *types, + va_list list, va_list check); + +#else + +#define parseArgs(args, types, rest...) \ + _parseArgs(((PyTupleObject *)(args))->ob_item, \ + ((PyTupleObject *)(args))->ob_size, types, ##rest) + +#define parseArg(arg, types, rest...) \ + _parseArgs(&(arg), 1, types, ##rest) + +int _parseArgs(PyObject **args, unsigned int count, char *types, ...); + +#endif + +int abstract_init(PyObject *self, PyObject *args, PyObject *kwds); +PyObject *wrapType(PyTypeObject *type, const jobject& obj); + +PyObject *j2p(const java::lang::String& js); +java::lang::String p2j(PyObject *object); + +PyObject *make_descriptor(PyTypeObject *value); +PyObject *make_descriptor(getclassfn initializeClass); +PyObject *make_descriptor(getclassfn initializeClass, int generics); +PyObject *make_descriptor(PyObject *value); +PyObject *make_descriptor(PyObject *(*wrapfn)(const jobject &)); +PyObject *make_descriptor(jboolean value); +PyObject *make_descriptor(jbyte value); +PyObject *make_descriptor(jchar value); +PyObject *make_descriptor(jdouble value); +PyObject *make_descriptor(jfloat value); +PyObject *make_descriptor(jint value); +PyObject *make_descriptor(jlong value); +PyObject *make_descriptor(jshort value); + +jobjectArray make_array(jclass cls, PyObject *sequence); + +PyObject *callSuper(PyTypeObject *type, + const char *name, PyObject *args, int cardinality); +PyObject *callSuper(PyTypeObject *type, PyObject *self, + const char *name, PyObject *args, int cardinality); + +template PyObject *get_iterator(T *self) +{ + java::util::Iterator iterator((jobject) NULL); + + OBJ_CALL(iterator = self->object.iterator()); + return java::util::t_Iterator::wrap_Object(iterator); +} + +#ifdef _java_generics +template PyObject *get_generic_iterator(T *self) +{ + java::util::Iterator iterator((jobject) NULL); + PyTypeObject *param = self->parameters ? self->parameters[0] : NULL; + + OBJ_CALL(iterator = self->object.iterator()); + return java::util::t_Iterator::wrap_Object(iterator, param); +} +#endif + +template PyObject *get_iterator_next(T *self) +{ + jboolean hasNext; + OBJ_CALL(hasNext = self->object.hasNext()); + if (!hasNext) + { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + jobject next; + OBJ_CALL(next = env->iteratorNext(self->object.this$)); + + jclass cls = java::lang::String::initializeClass(); + if (env->get_vm_env()->IsInstanceOf(next, cls)) + return env->fromJString((jstring) next, 1); + + return U::wrap_jobject(next); +} + +#ifdef _java_generics +template PyObject *get_generic_iterator_next(T *self) +{ + jboolean hasNext; + OBJ_CALL(hasNext = self->object.hasNext()); + if (!hasNext) + { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + jobject next; + OBJ_CALL(next = env->iteratorNext(self->object.this$)); + + jclass cls = java::lang::String::initializeClass(); + if (env->get_vm_env()->IsInstanceOf(next, cls)) + return env->fromJString((jstring) next, 1); + + PyTypeObject *param = self->parameters ? self->parameters[0] : NULL; + if (param != NULL) + return wrapType(param, next); + + return U::wrap_jobject(next); +} +#endif + +template PyObject *get_enumeration_next(T *self) +{ + jboolean hasMoreElements; + OBJ_CALL(hasMoreElements = self->object.hasMoreElements()); + if (!hasMoreElements) + { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + jobject next; + OBJ_CALL(next = env->enumerationNext(self->object.this$)); + + jclass cls = java::lang::String::initializeClass(); + if (env->get_vm_env()->IsInstanceOf(next, cls)) + return env->fromJString((jstring) next, 1); + + return U::wrap_jobject(next); +} + +#ifdef _java_generics +template PyObject *get_generic_enumeration_next(T *self) +{ + jboolean hasMoreElements; + OBJ_CALL(hasMoreElements = self->object.hasMoreElements()); + if (!hasMoreElements) + { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + jobject next; + OBJ_CALL(next = env->enumerationNext(self->object.this$)); + + jclass cls = java::lang::String::initializeClass(); + if (env->get_vm_env()->IsInstanceOf(next, cls)) + return env->fromJString((jstring) next, 1); + + PyTypeObject *param = self->parameters ? self->parameters[0] : NULL; + if (param != NULL) + return wrapType(param, next); + + return U::wrap_jobject(next); +} +#endif + +template PyObject *get_next(T *self) +{ + V next((jobject) NULL); + OBJ_CALL(next = self->object.next()); + if (!next) + { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + jclass cls = java::lang::String::initializeClass(); + if (env->get_vm_env()->IsInstanceOf(next.this$, cls)) + return env->fromJString((jstring) next.this$, 0); + + return U::wrap_Object(next); +} + +#ifdef _java_generics +template PyObject *get_generic_next(T *self) +{ + V next((jobject) NULL); + OBJ_CALL(next = self->object.next()); + if (!next) + { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + + jclass cls = java::lang::String::initializeClass(); + if (env->get_vm_env()->IsInstanceOf(next.this$, cls)) + return env->fromJString((jstring) next.this$, 0); + + PyTypeObject *param = self->parameters ? self->parameters[0] : NULL; + if (param != NULL) + return wrapType(param, next.this$); + + return U::wrap_Object(next); +} +#endif + +PyObject *get_extension_iterator(PyObject *self); +PyObject *get_extension_next(PyObject *self); +PyObject *get_extension_nextElement(PyObject *self); + +jobjectArray fromPySequence(jclass cls, PyObject *sequence); +PyObject *castCheck(PyObject *obj, getclassfn initializeClass, + int reportError); +void installType(PyTypeObject *type, PyObject *module, char *name, + int isExtension); + +#ifdef _java_generics +PyObject *typeParameters(PyTypeObject *types[], size_t size); +#endif + +extern PyTypeObject FinalizerClass$$Type; +extern PyTypeObject FinalizerProxy$$Type; + +typedef struct { + PyObject_HEAD + PyObject *object; +} t_fp; + +#endif /* _functions_h */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/jcc.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/jcc.cpp Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,690 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#ifdef linux +#include +#endif + +#include +#include "structmember.h" + +#include "JObject.h" +#include "JCCEnv.h" +#include "macros.h" + +_DLL_EXPORT JCCEnv *env; + + +/* JCCEnv */ + +class t_jccenv { +public: + PyObject_HEAD + JCCEnv *env; +}; + +static void t_jccenv_dealloc(t_jccenv *self); +static PyObject *t_jccenv_attachCurrentThread(PyObject *self, PyObject *args); +static PyObject *t_jccenv_detachCurrentThread(PyObject *self); +static PyObject *t_jccenv_isCurrentThreadAttached(PyObject *self); +static PyObject *t_jccenv_strhash(PyObject *self, PyObject *arg); +static PyObject *t_jccenv__dumpRefs(PyObject *self, + PyObject *args, PyObject *kwds); +static PyObject *t_jccenv__get_jni_version(PyObject *self, void *data); +static PyObject *t_jccenv__get_java_version(PyObject *self, void *data); + +static PyGetSetDef t_jccenv_properties[] = { + { "jni_version", (getter) t_jccenv__get_jni_version, NULL, NULL, NULL }, + { "java_version", (getter) t_jccenv__get_java_version, NULL, NULL, NULL }, + { NULL, NULL, NULL, NULL, NULL } +}; + +static PyMemberDef t_jccenv_members[] = { + { NULL, 0, 0, 0, NULL } +}; + +static PyMethodDef t_jccenv_methods[] = { + { "attachCurrentThread", (PyCFunction) t_jccenv_attachCurrentThread, + METH_VARARGS, NULL }, + { "detachCurrentThread", (PyCFunction) t_jccenv_detachCurrentThread, + METH_NOARGS, NULL }, + { "isCurrentThreadAttached", (PyCFunction) t_jccenv_isCurrentThreadAttached, + METH_NOARGS, NULL }, + { "strhash", (PyCFunction) t_jccenv_strhash, + METH_O, NULL }, + { "_dumpRefs", (PyCFunction) t_jccenv__dumpRefs, + METH_VARARGS | METH_KEYWORDS, NULL }, + { NULL, NULL, 0, NULL } +}; + +PyTypeObject JCCEnv$$Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "jcc.JCCEnv", /* tp_name */ + sizeof(t_jccenv), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)t_jccenv_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + "JCCEnv", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + t_jccenv_methods, /* tp_methods */ + t_jccenv_members, /* tp_members */ + t_jccenv_properties, /* tp_getset */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ +}; + +static void t_jccenv_dealloc(t_jccenv *self) +{ + self->ob_type->tp_free((PyObject *) self); +} + +static void add_option(char *name, char *value, JavaVMOption *option) +{ + char *buf = new char[strlen(name) + strlen(value) + 1]; + + sprintf(buf, "%s%s", name, value); + option->optionString = buf; +} + +#ifdef _jcc_lib +static void add_paths(char *name, char *p0, char *p1, JavaVMOption *option) +{ +#if defined(_MSC_VER) || defined(__WIN32) + char pathsep = ';'; +#else + char pathsep = ':'; +#endif + char *buf = new char[strlen(name) + strlen(p0) + strlen(p1) + 4]; + + sprintf(buf, "%s%s%c%s", name, p0, pathsep, p1); + option->optionString = buf; +} +#endif + + +static PyObject *t_jccenv_attachCurrentThread(PyObject *self, PyObject *args) +{ + char *name = NULL; + int asDaemon = 0, result; + JNIEnv *jenv = NULL; + + if (!PyArg_ParseTuple(args, "|si", &name, &asDaemon)) + return NULL; + + JavaVMAttachArgs attach = { + JNI_VERSION_1_4, name, NULL + }; + + if (asDaemon) + result = env->vm->AttachCurrentThreadAsDaemon((void **) &jenv, &attach); + else + result = env->vm->AttachCurrentThread((void **) &jenv, &attach); + + env->set_vm_env(jenv); + + return PyInt_FromLong(result); +} + +static PyObject *t_jccenv_detachCurrentThread(PyObject *self) +{ + int result = env->vm->DetachCurrentThread(); + + env->set_vm_env(NULL); + + return PyInt_FromLong(result); +} + +static PyObject *t_jccenv_isCurrentThreadAttached(PyObject *self) +{ + if (env->get_vm_env() != NULL) + Py_RETURN_TRUE; + + Py_RETURN_FALSE; +} + +static PyObject *t_jccenv_strhash(PyObject *self, PyObject *arg) +{ + int hash = PyObject_Hash(arg); + char buffer[10]; + + sprintf(buffer, "%08x", (unsigned int) hash); + return PyString_FromStringAndSize(buffer, 8); +} + +static PyObject *t_jccenv__dumpRefs(PyObject *self, + PyObject *args, PyObject *kwds) +{ + static char *kwnames[] = { + "classes", "values", NULL + }; + int classes = 0, values = 0; + PyObject *result; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|ii", kwnames, + &classes, &values)) + return NULL; + + if (classes) + result = PyDict_New(); + else + result = PyList_New(env->refs.size()); + + int count = 0; + + for (std::multimap::iterator iter = env->refs.begin(); + iter != env->refs.end(); + iter++) { + if (classes) // return dict of { class name: instance count } + { + char *name = env->getClassName(iter->second.global); + PyObject *key = PyString_FromString(name); + PyObject *value = PyDict_GetItem(result, key); + + if (value == NULL) + value = PyInt_FromLong(1); + else + value = PyInt_FromLong(PyInt_AS_LONG(value) + 1); + + PyDict_SetItem(result, key, value); + Py_DECREF(key); + Py_DECREF(value); + + delete name; + } + else if (values) // return list of (value string, ref count) + { + char *str = env->toString(iter->second.global); + PyObject *key = PyString_FromString(str); + PyObject *value = PyInt_FromLong(iter->second.count); + +#if PY_VERSION_HEX < 0x02040000 + PyList_SET_ITEM(result, count++, Py_BuildValue("(OO)", key, value)); +#else + PyList_SET_ITEM(result, count++, PyTuple_Pack(2, key, value)); +#endif + Py_DECREF(key); + Py_DECREF(value); + + delete str; + } + else // return list of (id hash code, ref count) + { + PyObject *key = PyInt_FromLong(iter->first); + PyObject *value = PyInt_FromLong(iter->second.count); + +#if PY_VERSION_HEX < 0x02040000 + PyList_SET_ITEM(result, count++, Py_BuildValue("(OO)", key, value)); +#else + PyList_SET_ITEM(result, count++, PyTuple_Pack(2, key, value)); +#endif + Py_DECREF(key); + Py_DECREF(value); + } + } + + return result; +} + + +static PyObject *t_jccenv__get_jni_version(PyObject *self, void *data) +{ + return PyInt_FromLong(env->getJNIVersion()); +} + +static PyObject *t_jccenv__get_java_version(PyObject *self, void *data) +{ + return env->fromJString(env->getJavaVersion(), 1); +} + +_DLL_EXPORT PyObject *getVMEnv(PyObject *self) +{ + if (env->vm != NULL) + { + t_jccenv *jccenv = (t_jccenv *) JCCEnv$$Type.tp_alloc(&JCCEnv$$Type, 0); + jccenv->env = env; + + return (PyObject *) jccenv; + } + + Py_RETURN_NONE; +} + +#ifdef _jcc_lib +static void registerNatives(JNIEnv *vm_env); +#endif + +_DLL_EXPORT PyObject *initJCC(PyObject *module) +{ + static int _once_only = 1; + + if (_once_only) + { + PyEval_InitThreads(); + INSTALL_TYPE(JCCEnv, module); + + if (env == NULL) + env = new JCCEnv(NULL, NULL); + + _once_only = 0; + Py_RETURN_TRUE; + } + + Py_RETURN_FALSE; +} + +_DLL_EXPORT PyObject *initVM(PyObject *self, PyObject *args, PyObject *kwds) +{ + static char *kwnames[] = { + "classpath", "initialheap", "maxheap", "maxstack", + "vmargs", NULL + }; + char *classpath = NULL; + char *initialheap = NULL, *maxheap = NULL, *maxstack = NULL; + char *vmargs = NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzzzz", kwnames, + &classpath, + &initialheap, &maxheap, &maxstack, + &vmargs)) + return NULL; + + if (env->vm) + { + PyObject *module_cp = NULL; + + if (initialheap || maxheap || maxstack || vmargs) + { + PyErr_SetString(PyExc_ValueError, + "JVM is already running, options are ineffective"); + return NULL; + } + + if (classpath == NULL && self != NULL) + { + module_cp = PyObject_GetAttrString(self, "CLASSPATH"); + if (module_cp != NULL) + classpath = PyString_AsString(module_cp); + } + + if (classpath && classpath[0]) + env->setClassPath(classpath); + + Py_XDECREF(module_cp); + + return getVMEnv(self); + } + else + { + JavaVMInitArgs vm_args; + JavaVMOption vm_options[32]; + JNIEnv *vm_env; + JavaVM *vm; + unsigned int nOptions = 0; + PyObject *module_cp = NULL; + + vm_args.version = JNI_VERSION_1_4; + JNI_GetDefaultJavaVMInitArgs(&vm_args); + + if (classpath == NULL && self != NULL) + { + module_cp = PyObject_GetAttrString(self, "CLASSPATH"); + if (module_cp != NULL) + classpath = PyString_AsString(module_cp); + } + +#ifdef _jcc_lib + PyObject *jcc = PyImport_ImportModule("jcc"); + PyObject *cp = PyObject_GetAttrString(jcc, "CLASSPATH"); + + if (classpath) + add_paths("-Djava.class.path=", PyString_AsString(cp), classpath, + &vm_options[nOptions++]); + else + add_option("-Djava.class.path=", PyString_AsString(cp), + &vm_options[nOptions++]); + + Py_DECREF(cp); + Py_DECREF(jcc); +#else + if (classpath) + add_option("-Djava.class.path=", classpath, + &vm_options[nOptions++]); +#endif + + Py_XDECREF(module_cp); + + if (initialheap) + add_option("-Xms", initialheap, &vm_options[nOptions++]); + if (maxheap) + add_option("-Xmx", maxheap, &vm_options[nOptions++]); + if (maxstack) + add_option("-Xss", maxstack, &vm_options[nOptions++]); + + if (vmargs) + { + char *buf = strdup(vmargs); + char *sep = ","; + char *option; + + for (option = strtok(buf, sep); option; option = strtok(NULL, sep)) + { + if (nOptions < sizeof(vm_options) / sizeof(JavaVMOption)) + add_option("", option, &vm_options[nOptions++]); + else + { + free(buf); + for (unsigned int i = 0; i < nOptions; i++) + delete vm_options[i].optionString; + PyErr_Format(PyExc_ValueError, "Too many options (> %d)", + nOptions); + return NULL; + } + } + free(buf); + } + + //vm_options[nOptions++].optionString = "-verbose:gc"; + //vm_options[nOptions++].optionString = "-Xcheck:jni"; + + vm_args.nOptions = nOptions; + vm_args.ignoreUnrecognized = JNI_FALSE; + vm_args.options = vm_options; + + if (JNI_CreateJavaVM(&vm, (void **) &vm_env, &vm_args) < 0) + { + for (unsigned int i = 0; i < nOptions; i++) + delete vm_options[i].optionString; + + PyErr_Format(PyExc_ValueError, + "An error occurred while creating Java VM"); + return NULL; + } + + env->set_vm(vm, vm_env); + + for (unsigned int i = 0; i < nOptions; i++) + delete vm_options[i].optionString; + + t_jccenv *jccenv = (t_jccenv *) JCCEnv$$Type.tp_alloc(&JCCEnv$$Type, 0); + jccenv->env = env; + +#ifdef _jcc_lib + registerNatives(vm_env); +#endif + + return (PyObject *) jccenv; + } +} + +extern "C" { + +#ifdef _jcc_lib + static void raise_error(JNIEnv *vm_env, const char *message) + { + jclass cls = vm_env->FindClass("org/apache/jcc/PythonException"); + vm_env->ThrowNew(cls, message); + } + + JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) + { + JNIEnv *vm_env; + + if (!vm->GetEnv((void **) &vm_env, JNI_VERSION_1_4)) + env = new JCCEnv(vm, vm_env); + + registerNatives(vm_env); + + return JNI_VERSION_1_4; + } + + JNIEXPORT void JNICALL Java_org_apache_jcc_PythonVM_init(JNIEnv *vm_env, jobject self, jstring programName, jobjectArray args) + { + const char *str = vm_env->GetStringUTFChars(programName, JNI_FALSE); +#ifdef linux + char buf[32]; + + // load python runtime for other .so modules to link (such as _time.so) + sprintf(buf, "libpython%d.%d.so", PY_MAJOR_VERSION, PY_MINOR_VERSION); + dlopen(buf, RTLD_NOW | RTLD_GLOBAL); +#endif + + Py_SetProgramName((char *) str); + + PyEval_InitThreads(); + Py_Initialize(); + + if (args) + { + int argc = vm_env->GetArrayLength(args); + char **argv = (char **) calloc(argc + 1, sizeof(char *)); + + argv[0] = (char *) str; + for (int i = 0; i < argc; i++) { + jstring arg = (jstring) vm_env->GetObjectArrayElement(args, i); + argv[i + 1] = (char *) vm_env->GetStringUTFChars(arg, JNI_FALSE); + } + + PySys_SetArgv(argc + 1, argv); + + for (int i = 0; i < argc; i++) { + jstring arg = (jstring) vm_env->GetObjectArrayElement(args, i); + vm_env->ReleaseStringUTFChars(arg, argv[i + 1]); + } + free(argv); + } + else + PySys_SetArgv(1, (char **) &str); + + vm_env->ReleaseStringUTFChars(programName, str); + PyEval_ReleaseLock(); + } + + JNIEXPORT jobject JNICALL Java_org_apache_jcc_PythonVM_instantiate(JNIEnv *vm_env, jobject self, jstring moduleName, jstring className) + { + PythonGIL gil(vm_env); + + const char *modStr = vm_env->GetStringUTFChars(moduleName, JNI_FALSE); + PyObject *module = + PyImport_ImportModule((char *) modStr); // python 2.4 cast + + vm_env->ReleaseStringUTFChars(moduleName, modStr); + + if (!module) + { + raise_error(vm_env, "import failed"); + return NULL; + } + + const char *clsStr = vm_env->GetStringUTFChars(className, JNI_FALSE); + PyObject *cls = + PyObject_GetAttrString(module, (char *) clsStr); // python 2.4 cast + PyObject *obj; + jobject jobj; + + vm_env->ReleaseStringUTFChars(className, clsStr); + Py_DECREF(module); + + if (!cls) + { + raise_error(vm_env, "class not found"); + return NULL; + } + + obj = PyObject_CallFunctionObjArgs(cls, NULL); + Py_DECREF(cls); + + if (!obj) + { + raise_error(vm_env, "instantiation failed"); + return NULL; + } + + PyObject *cObj = PyObject_GetAttrString(obj, "_jobject"); + + if (!cObj) + { + raise_error(vm_env, "instance does not proxy a java object"); + Py_DECREF(obj); + + return NULL; + } + + jobj = (jobject) PyCObject_AsVoidPtr(cObj); + Py_DECREF(cObj); + + jobj = vm_env->NewLocalRef(jobj); + Py_DECREF(obj); + + return jobj; + } +#endif + + void JNICALL PythonException_getErrorInfo(JNIEnv *vm_env, jobject self) + { + PythonGIL gil(vm_env); + + if (!PyErr_Occurred()) + return; + + PyObject *type, *value, *tb, *errorName; + jclass jcls = vm_env->GetObjectClass(self); + + PyErr_Fetch(&type, &value, &tb); + + errorName = PyObject_GetAttrString(type, "__name__"); + if (errorName != NULL) + { + jfieldID fid = + vm_env->GetFieldID(jcls, "errorName", "Ljava/lang/String;"); + jstring str = env->fromPyString(errorName); + + vm_env->SetObjectField(self, fid, str); + vm_env->DeleteLocalRef(str); + Py_DECREF(errorName); + } + + if (value != NULL) + { + PyObject *message = PyObject_Str(value); + + if (message != NULL) + { + jfieldID fid = + vm_env->GetFieldID(jcls, "message", "Ljava/lang/String;"); + jstring str = env->fromPyString(message); + + vm_env->SetObjectField(self, fid, str); + vm_env->DeleteLocalRef(str); + Py_DECREF(message); + } + } + + PyObject *module = NULL, *cls = NULL, *stringIO = NULL, *result = NULL; + PyObject *_stderr = PySys_GetObject("stderr"); + if (!_stderr) + goto err; + + module = PyImport_ImportModule("cStringIO"); + if (!module) + goto err; + + cls = PyObject_GetAttrString(module, "StringIO"); + Py_DECREF(module); + if (!cls) + goto err; + + stringIO = PyObject_CallObject(cls, NULL); + Py_DECREF(cls); + if (!stringIO) + goto err; + + Py_INCREF(_stderr); + PySys_SetObject("stderr", stringIO); + + PyErr_Restore(type, value, tb); + PyErr_Print(); + + result = PyObject_CallMethod(stringIO, "getvalue", NULL); + Py_DECREF(stringIO); + + if (result != NULL) + { + jfieldID fid = + vm_env->GetFieldID(jcls, "traceback", "Ljava/lang/String;"); + jstring str = env->fromPyString(result); + + vm_env->SetObjectField(self, fid, str); + vm_env->DeleteLocalRef(str); + Py_DECREF(result); + } + + PySys_SetObject("stderr", _stderr); + Py_DECREF(_stderr); + + return; + + err: + PyErr_Restore(type, value, tb); + } + + void JNICALL PythonException_clear(JNIEnv *vm_env, jobject self) + { + PythonGIL gil(vm_env); + PyErr_Clear(); + } +}; + +#ifdef _jcc_lib +static void registerNatives(JNIEnv *vm_env) +{ + jclass cls = vm_env->FindClass("org/apache/jcc/PythonException"); + JNINativeMethod methods[] = { + { "getErrorInfo", "()V", (void *) PythonException_getErrorInfo }, + { "clear", "()V", (void *) PythonException_clear }, + }; + + vm_env->RegisterNatives(cls, methods, 2); +} +#endif diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/jccfuncs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/jccfuncs.h Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,46 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _jccfuncs_H +#define _jccfuncs_H + +#ifdef PYTHON + +PyObject *__initialize__(PyObject *module, PyObject *args, PyObject *kwds); +PyObject *initVM(PyObject *self, PyObject *args, PyObject *kwds); +PyObject *getVMEnv(PyObject *self); +PyObject *_set_exception_types(PyObject *self, PyObject *args); +PyObject *_set_function_self(PyObject *self, PyObject *args); +PyObject *findClass(PyObject *self, PyObject *args); +PyObject *JArray_Type(PyObject *self, PyObject *arg); + +PyMethodDef jcc_funcs[] = { + { "initVM", (PyCFunction) __initialize__, + METH_VARARGS | METH_KEYWORDS, NULL }, + { "getVMEnv", (PyCFunction) getVMEnv, + METH_NOARGS, NULL }, + { "findClass", (PyCFunction) findClass, + METH_VARARGS, NULL }, + { "_set_exception_types", (PyCFunction) _set_exception_types, + METH_VARARGS, NULL }, + { "_set_function_self", (PyCFunction) _set_function_self, + METH_VARARGS, NULL }, + { "JArray", (PyCFunction) JArray_Type, + METH_O, NULL }, + { NULL, NULL, 0, NULL } +}; + +#endif + +#endif /* _jccfuncs_H */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/macros.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/macros.h Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,170 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _macros_H +#define _macros_H + +#define OBJ_CALL(action) \ + { \ + try { \ + PythonThreadState state(1); \ + action; \ + } catch (JCCEnv::pythonError) { \ + return NULL; \ + } catch (JCCEnv::exception e) { \ + return PyErr_SetJavaError(e.throwable); \ + } \ + } + +#define INT_CALL(action) \ + { \ + try { \ + PythonThreadState state(1); \ + action; \ + } catch (JCCEnv::pythonError) { \ + return -1; \ + } catch (JCCEnv::exception e) { \ + PyErr_SetJavaError(e.throwable); \ + return -1; \ + } \ + } + + +#define DECLARE_METHOD(type, name, flags) \ + { #name, (PyCFunction) type##_##name, flags, "" } + +#define DECLARE_GET_FIELD(type, name) \ + { #name, (getter) type##_get__##name, NULL, "", NULL } + +#define DECLARE_SET_FIELD(type, name) \ + { #name, NULL, (setter) type##_set__##name, "", NULL } + +#define DECLARE_GETSET_FIELD(type, name) \ + { #name, (getter) type##_get__##name, (setter) type##_set__##name, "", NULL } + + +#define DECLARE_TYPE(name, t_name, base, javaClass, \ + init, iter, iternext, getset, mapping, sequence) \ +PyTypeObject name##$$Type = { \ + PyObject_HEAD_INIT(NULL) \ + /* ob_size */ 0, \ + /* tp_name */ #name, \ + /* tp_basicsize */ sizeof(t_name), \ + /* tp_itemsize */ 0, \ + /* tp_dealloc */ 0, \ + /* tp_print */ 0, \ + /* tp_getattr */ 0, \ + /* tp_setattr */ 0, \ + /* tp_compare */ 0, \ + /* tp_repr */ 0, \ + /* tp_as_number */ 0, \ + /* tp_as_sequence */ sequence, \ + /* tp_as_mapping */ mapping, \ + /* tp_hash */ 0, \ + /* tp_call */ 0, \ + /* tp_str */ 0, \ + /* tp_getattro */ 0, \ + /* tp_setattro */ 0, \ + /* tp_as_buffer */ 0, \ + /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, \ + /* tp_doc */ #t_name" objects", \ + /* tp_traverse */ 0, \ + /* tp_clear */ 0, \ + /* tp_richcompare */ 0, \ + /* tp_weaklistoffset */ 0, \ + /* tp_iter */ (getiterfunc) iter, \ + /* tp_iternext */ (iternextfunc) iternext, \ + /* tp_methods */ t_name##__methods_, \ + /* tp_members */ 0, \ + /* tp_getset */ getset, \ + /* tp_base */ &base##$$Type, \ + /* tp_dict */ 0, \ + /* tp_descr_get */ 0, \ + /* tp_descr_set */ 0, \ + /* tp_dictoffset */ 0, \ + /* tp_init */ (initproc)init, \ + /* tp_alloc */ 0, \ + /* tp_new */ 0, \ +}; \ +PyObject *t_name::wrap_Object(const javaClass& object) \ +{ \ + if (!!object) \ + { \ + t_name *self = \ + (t_name *) name##$$Type.tp_alloc(&name##$$Type, 0); \ + if (self) \ + self->object = object; \ + return (PyObject *) self; \ + } \ + Py_RETURN_NONE; \ +} \ +PyObject *t_name::wrap_jobject(const jobject& object) \ +{ \ + if (!!object) \ + { \ + t_name *self = \ + (t_name *) name##$$Type.tp_alloc(&name##$$Type, 0); \ + if (self) \ + self->object = javaClass(object); \ + return (PyObject *) self; \ + } \ + Py_RETURN_NONE; \ +} \ + + +#define INSTALL_TYPE(name, module) \ + if (PyType_Ready(&name##$$Type) == 0) \ + { \ + Py_INCREF(&name##$$Type); \ + PyModule_AddObject(module, #name, (PyObject *) &name##$$Type); \ + } + + +#define Py_RETURN_BOOL(b) \ + { \ + if (b) \ + Py_RETURN_TRUE; \ + else \ + Py_RETURN_FALSE; \ + } + + +#if PY_VERSION_HEX < 0x02040000 + +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True +#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False + +#define Py_CLEAR(op) \ + do { \ + if (op) { \ + PyObject *tmp = (PyObject *)(op); \ + (op) = NULL; \ + Py_DECREF(tmp); \ + } \ + } while (0) + +#define Py_VISIT(op) \ + do { \ + if (op) { \ + int vret = visit((PyObject *)(op), arg); \ + if (vret) \ + return vret; \ + } \ + } while (0) + +#endif /* Python 2.3.5 */ + + +#endif /* _macros_H */ diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/jcc/sources/types.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/jcc/sources/types.cpp Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,558 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "structmember.h" + +#include "java/lang/Object.h" +#include "java/lang/Class.h" +#include "functions.h" + +using namespace java::lang; + + +/* FinalizerProxy */ + +static PyObject *t_fc_call(PyObject *self, PyObject *args, PyObject *kwds); + +static void t_fp_dealloc(t_fp *self); +static PyObject *t_fp_getattro(t_fp *self, PyObject *name); +static int t_fp_setattro(t_fp *self, PyObject *name, PyObject *value); +static int t_fp_traverse(t_fp *self, visitproc visit, void *arg); +static int t_fp_clear(t_fp *self); +static PyObject *t_fp_repr(t_fp *self); +static PyObject *t_fp_iter(t_fp *self); + +static Py_ssize_t t_fp_map_length(t_fp *self); +static PyObject *t_fp_map_get(t_fp *self, PyObject *key); +static int t_fp_map_set(t_fp *self, PyObject *key, PyObject *value); + +static Py_ssize_t t_fp_seq_length(t_fp *self); +static PyObject *t_fp_seq_get(t_fp *self, Py_ssize_t n); +static int t_fp_seq_contains(t_fp *self, PyObject *value); +static PyObject *t_fp_seq_concat(t_fp *self, PyObject *arg); +static PyObject *t_fp_seq_repeat(t_fp *self, Py_ssize_t n); +static PyObject *t_fp_seq_getslice(t_fp *self, Py_ssize_t low, Py_ssize_t high); +static int t_fp_seq_set(t_fp *self, Py_ssize_t i, PyObject *value); +static int t_fp_seq_setslice(t_fp *self, Py_ssize_t low, + Py_ssize_t high, PyObject *arg); +static PyObject *t_fp_seq_inplace_concat(t_fp *self, PyObject *arg); +static PyObject *t_fp_seq_inplace_repeat(t_fp *self, Py_ssize_t n); + + +PyTypeObject FinalizerClass$$Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "jcc.FinalizerClass", /* tp_name */ + PyType_Type.tp_basicsize, /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + (ternaryfunc) t_fc_call, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + "FinalizerClass", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + &PyType_Type, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ +}; + +static PyMappingMethods t_fp_as_mapping = { + (lenfunc)t_fp_map_length, /* mp_length */ + (binaryfunc)t_fp_map_get, /* mp_subscript */ + (objobjargproc)t_fp_map_set, /* mp_ass_subscript */ +}; + +static PySequenceMethods t_fp_as_sequence = { + (lenfunc)t_fp_seq_length, /* sq_length */ + (binaryfunc)t_fp_seq_concat, /* sq_concat */ + (ssizeargfunc)t_fp_seq_repeat, /* sq_repeat */ + (ssizeargfunc)t_fp_seq_get, /* sq_item */ + (ssizessizeargfunc)t_fp_seq_getslice, /* sq_slice */ + (ssizeobjargproc)t_fp_seq_set, /* sq_ass_item */ + (ssizessizeobjargproc)t_fp_seq_setslice, /* sq_ass_slice */ + (objobjproc)t_fp_seq_contains, /* sq_contains */ + (binaryfunc)t_fp_seq_inplace_concat, /* sq_inplace_concat */ + (ssizeargfunc)t_fp_seq_inplace_repeat, /* sq_inplace_repeat */ +}; + +PyTypeObject FinalizerProxy$$Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "jcc.FinalizerProxy", /* tp_name */ + sizeof(t_fp), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)t_fp_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc)t_fp_repr, /* tp_repr */ + 0, /* tp_as_number */ + &t_fp_as_sequence, /* tp_as_sequence */ + &t_fp_as_mapping, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + (getattrofunc)t_fp_getattro, /* tp_getattro */ + (setattrofunc)t_fp_setattro, /* tp_setattro */ + 0, /* tp_as_buffer */ + (Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_HAVE_GC), /* tp_flags */ + "FinalizerProxy", /* tp_doc */ + (traverseproc)t_fp_traverse, /* tp_traverse */ + (inquiry)t_fp_clear, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + (getiterfunc)t_fp_iter, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ +}; + +static PyObject *t_fc_call(PyObject *self, PyObject *args, PyObject *kwds) +{ + PyObject *obj = PyType_Type.tp_call(self, args, kwds); + + if (obj) + { + t_fp *fp = (t_fp *) FinalizerProxy$$Type.tp_alloc(&FinalizerProxy$$Type, 0); + + fp->object = obj; + obj = (PyObject *) fp; + } + + return obj; +} + +static void t_fp_dealloc(t_fp *self) +{ + if (self->object) + ((t_JObject *) self->object)->object.weaken$(); + + t_fp_clear(self); + self->ob_type->tp_free((PyObject *) self); +} + +static int t_fp_traverse(t_fp *self, visitproc visit, void *arg) +{ + Py_VISIT(self->object); + return 0; +} + +static int t_fp_clear(t_fp *self) +{ + Py_CLEAR(self->object); + return 0; +} + +static PyObject *t_fp_repr(t_fp *self) +{ + return PyObject_Repr(self->object); +} + +static PyObject *t_fp_iter(t_fp *self) +{ + return PyObject_GetIter(self->object); +} + +static PyObject *t_fp_getattro(t_fp *self, PyObject *name) +{ + return PyObject_GetAttr(self->object, name); +} + +static int t_fp_setattro(t_fp *self, PyObject *name, PyObject *value) +{ + return PyObject_SetAttr(self->object, name, value); +} + +static Py_ssize_t t_fp_map_length(t_fp *self) +{ + return PyMapping_Size(self->object); +} + +static PyObject *t_fp_map_get(t_fp *self, PyObject *key) +{ + return PyObject_GetItem(self->object, key); +} + +static int t_fp_map_set(t_fp *self, PyObject *key, PyObject *value) +{ + if (value == NULL) + return PyObject_DelItem(self->object, key); + + return PyObject_SetItem(self->object, key, value); +} + +static Py_ssize_t t_fp_seq_length(t_fp *self) +{ + return PySequence_Length(self->object); +} + +static PyObject *t_fp_seq_get(t_fp *self, Py_ssize_t n) +{ + return PySequence_GetItem(self->object, n); +} + +static int t_fp_seq_contains(t_fp *self, PyObject *value) +{ + return PySequence_Contains(self->object, value); +} + +static PyObject *t_fp_seq_concat(t_fp *self, PyObject *arg) +{ + return PySequence_Concat(self->object, arg); +} + +static PyObject *t_fp_seq_repeat(t_fp *self, Py_ssize_t n) +{ + return PySequence_Repeat(self->object, n); +} + +static PyObject *t_fp_seq_getslice(t_fp *self, Py_ssize_t low, Py_ssize_t high) +{ + return PySequence_GetSlice(self->object, low, high); +} + +static int t_fp_seq_set(t_fp *self, Py_ssize_t i, PyObject *value) +{ + return PySequence_SetItem(self->object, i, value); +} + +static int t_fp_seq_setslice(t_fp *self, Py_ssize_t low, + Py_ssize_t high, PyObject *arg) +{ + return PySequence_SetSlice(self->object, low, high, arg); +} + +static PyObject *t_fp_seq_inplace_concat(t_fp *self, PyObject *arg) +{ + return PySequence_InPlaceConcat(self->object, arg); +} + +static PyObject *t_fp_seq_inplace_repeat(t_fp *self, Py_ssize_t n) +{ + return PySequence_InPlaceRepeat(self->object, n); +} + + +/* const variable descriptor */ + +class t_descriptor { +public: + PyObject_HEAD + int flags; + union { + PyObject *value; + getclassfn initializeClass; + } access; +}; + +#define DESCRIPTOR_VALUE 0x0001 +#define DESCRIPTOR_CLASS 0x0002 +#define DESCRIPTOR_GETFN 0x0004 +#define DESCRIPTOR_GENERIC 0x0008 + +static void t_descriptor_dealloc(t_descriptor *self); +static PyObject *t_descriptor___get__(t_descriptor *self, + PyObject *obj, PyObject *type); + +static PyMethodDef t_descriptor_methods[] = { + { NULL, NULL, 0, NULL } +}; + + +PyTypeObject ConstVariableDescriptor$$Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "jcc.ConstVariableDescriptor", /* tp_name */ + sizeof(t_descriptor), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)t_descriptor_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + "const variable descriptor", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + t_descriptor_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + (descrgetfunc)t_descriptor___get__, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ +}; + +static void t_descriptor_dealloc(t_descriptor *self) +{ + if (self->flags & DESCRIPTOR_VALUE) + { + Py_DECREF(self->access.value); + } + self->ob_type->tp_free((PyObject *) self); +} + +PyObject *make_descriptor(PyTypeObject *value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + Py_INCREF(value); + self->access.value = (PyObject *) value; + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(getclassfn initializeClass) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.initializeClass = initializeClass; + self->flags = DESCRIPTOR_CLASS; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(getclassfn initializeClass, int generics) +{ + t_descriptor *self = (t_descriptor *) make_descriptor(initializeClass); + + if (self && generics) + self->flags |= DESCRIPTOR_GENERIC; + + return (PyObject *) self; +} + +PyObject *make_descriptor(PyObject *value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = value; + self->flags = DESCRIPTOR_VALUE; + } + else + Py_DECREF(value); + + return (PyObject *) self; +} + +PyObject *make_descriptor(PyObject *(*wrapfn)(const jobject &)) +{ + return make_descriptor(PyCObject_FromVoidPtr((void *) wrapfn, NULL)); +} + +PyObject *make_descriptor(jboolean b) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + PyObject *value = b ? Py_True : Py_False; + self->access.value = (PyObject *) value; Py_INCREF(value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jbyte value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = PyInt_FromLong(value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jchar value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + Py_UNICODE pchar = (Py_UNICODE) value; + + self->access.value = PyUnicode_FromUnicode(&pchar, 1); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jdouble value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = PyFloat_FromDouble(value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jfloat value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = PyFloat_FromDouble((double) value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jint value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = PyInt_FromLong(value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jlong value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = PyLong_FromLongLong((long long) value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +PyObject *make_descriptor(jshort value) +{ + t_descriptor *self = (t_descriptor *) + ConstVariableDescriptor$$Type.tp_alloc(&ConstVariableDescriptor$$Type, 0); + + if (self) + { + self->access.value = PyInt_FromLong((short) value); + self->flags = DESCRIPTOR_VALUE; + } + + return (PyObject *) self; +} + +static PyObject *t_descriptor___get__(t_descriptor *self, + PyObject *obj, PyObject *type) +{ + if (self->flags & DESCRIPTOR_VALUE) + { + Py_INCREF(self->access.value); + return self->access.value; + } + + if (self->flags & DESCRIPTOR_CLASS) + { +#ifdef _java_generics + if (self->flags & DESCRIPTOR_GENERIC) + return t_Class::wrap_Object(Class((*self->access.initializeClass)()), (PyTypeObject *) type); + else +#endif + return t_Class::wrap_Object(Class((*self->access.initializeClass)())); + } + + Py_RETURN_NONE; +} + diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/libjcc.dylib Binary file web/lib/arch/osx/libjcc.dylib has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/lucene/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,30 @@ + +import os, sys + +if sys.platform == 'win32': + import jcc, _lucene +else: + import _lucene + +__dir__ = os.path.abspath(os.path.dirname(__file__)) + +class JavaError(Exception): + def getJavaException(self): + return self.args[0] + def __str__(self): + writer = _lucene.StringWriter() + self.getJavaException().printStackTrace(_lucene.PrintWriter(writer)) + return "\n".join((super(JavaError, self).__str__(), " Java stacktrace:", str(writer))) + +class InvalidArgsError(Exception): + pass + +_lucene._set_exception_types(JavaError, InvalidArgsError) + +VERSION = "3.0.1" +CLASSPATH = [os.path.join(__dir__, "lucene-core-3.0.1.jar"), os.path.join(__dir__, "lucene-snowball-3.0.1.jar"), os.path.join(__dir__, "lucene-analyzers-3.0.1.jar"), os.path.join(__dir__, "lucene-regex-3.0.1.jar"), os.path.join(__dir__, "lucene-memory-3.0.1.jar"), os.path.join(__dir__, "lucene-highlighter-3.0.1.jar"), os.path.join(__dir__, "lucene-queries-3.0.1.jar"), os.path.join(__dir__, "extensions.jar")] +CLASSPATH = os.pathsep.join(CLASSPATH) +_lucene.CLASSPATH = CLASSPATH +_lucene._set_function_self(_lucene.initVM, _lucene) + +from _lucene import * diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/_lucene.so Binary file web/lib/arch/osx/lucene/_lucene.so has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/collections.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/arch/osx/lucene/collections.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,117 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from lucene import PythonSet, PythonIterator, JavaError + + +class JavaSet(PythonSet): + """ + This class implements java.util.Set around a Python set instance it wraps. + """ + + def __init__(self, _set): + super(JavaSet, self).__init__() + self._set = _set + + def __contains__(self, obj): + return obj in self._set + + def __len__(self): + return len(self._set) + + def __iter__(self): + return iter(self._set) + + def add(self, obj): + if obj not in self._set: + self._set.add(obj) + return True + return False + + def addAll(self, collection): + size = len(self._set) + self._set.update(collection) + return len(self._set) > size + + def clear(self): + self._set.clear() + + def contains(self, obj): + return obj in self._set + + def containsAll(self, collection): + for obj in collection: + if obj not in self._set: + return False + return True + + def equals(self, collection): + if type(self) is type(collection): + return self._set == collection._set + return False + + def isEmpty(self): + return len(self._set) == 0 + + def iterator(self): + class _iterator(PythonIterator): + def __init__(_self): + super(_iterator, _self).__init__() + _self._iterator = iter(self._set) + def hasNext(_self): + if hasattr(_self, '_next'): + return True + try: + _self._next = _self._iterator.next() + return True + except StopIteration: + return False + def next(_self): + if hasattr(_self, '_next'): + next = _self._next + del _self._next + else: + next = _self._iterator.next() + return next + return _iterator() + + def remove(self, obj): + try: + self._set.remove(obj) + return True + except KeyError: + return False + + def removeAll(self, collection): + result = False + for obj in collection: + try: + self._set.remove(obj) + result = True + except KeyError: + pass + return result + + def retainAll(self, collection): + result = False + for obj in list(self._set): + if obj not in c: + self._set.remove(obj) + result = True + return result + + def size(self): + return len(self._set) + + def toArray(self): + return list(self._set) + diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/extensions.jar Binary file web/lib/arch/osx/lucene/extensions.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-analyzers-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-analyzers-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-core-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-core-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-highlighter-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-highlighter-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-memory-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-memory-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-queries-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-queries-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-regex-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-regex-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/arch/osx/lucene/lucene-snowball-3.0.1.jar Binary file web/lib/arch/osx/lucene/lucene-snowball-3.0.1.jar has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/__init__.py --- a/web/lib/django/__init__.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -1,4 +1,4 @@ -VERSION = (1, 1, 1, 'final', 0) +VERSION = (1, 2, 0, 'rc', 1) def get_version(): version = '%s.%s' % (VERSION[0], VERSION[1]) diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/__init__.py --- a/web/lib/django/conf/__init__.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -46,7 +46,7 @@ argument must support attribute access (__getattr__)). """ if self._wrapped != None: - raise RuntimeError, 'Settings already configured.' + raise RuntimeError('Settings already configured.') holder = UserSettingsHolder(default_settings) for name, value in options.items(): setattr(holder, name, value) @@ -72,7 +72,7 @@ try: mod = importlib.import_module(self.SETTINGS_MODULE) except ImportError, e: - raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e) + raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)) # Settings that should be converted into tuples if they're mistakenly entered # as strings. @@ -102,15 +102,12 @@ new_installed_apps.append(app) self.INSTALLED_APPS = new_installed_apps - if hasattr(time, 'tzset'): + if hasattr(time, 'tzset') and getattr(self, 'TIME_ZONE'): # Move the time zone info into os.environ. See ticket #2315 for why # we don't do this unconditionally (breaks Windows). os.environ['TZ'] = self.TIME_ZONE time.tzset() - def get_all_members(self): - return dir(self) - class UserSettingsHolder(object): """ Holder for user configured settings. @@ -129,8 +126,11 @@ def __getattr__(self, name): return getattr(self.default_settings, name) - def get_all_members(self): - return dir(self) + dir(self.default_settings) + def __dir__(self): + return self.__dict__.keys() + dir(self.default_settings) + + # For Python < 2.6: + __members__ = property(lambda self: self.__dir__()) settings = LazySettings() diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/global_settings.py --- a/web/lib/django/conf/global_settings.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/global_settings.py Tue May 25 02:43:45 2010 +0200 @@ -42,8 +42,9 @@ # should be the utf-8 encoded local name for the language. LANGUAGES = ( ('ar', gettext_noop('Arabic')), + ('bg', gettext_noop('Bulgarian')), ('bn', gettext_noop('Bengali')), - ('bg', gettext_noop('Bulgarian')), + ('bs', gettext_noop('Bosnian')), ('ca', gettext_noop('Catalan')), ('cs', gettext_noop('Czech')), ('cy', gettext_noop('Welsh')), @@ -51,31 +52,36 @@ ('de', gettext_noop('German')), ('el', gettext_noop('Greek')), ('en', gettext_noop('English')), + ('en-gb', gettext_noop('British English')), ('es', gettext_noop('Spanish')), + ('es-ar', gettext_noop('Argentinean Spanish')), ('et', gettext_noop('Estonian')), - ('es-ar', gettext_noop('Argentinean Spanish')), ('eu', gettext_noop('Basque')), ('fa', gettext_noop('Persian')), ('fi', gettext_noop('Finnish')), ('fr', gettext_noop('French')), + ('fy-nl', gettext_noop('Frisian')), ('ga', gettext_noop('Irish')), ('gl', gettext_noop('Galician')), - ('hu', gettext_noop('Hungarian')), ('he', gettext_noop('Hebrew')), ('hi', gettext_noop('Hindi')), ('hr', gettext_noop('Croatian')), + ('hu', gettext_noop('Hungarian')), ('is', gettext_noop('Icelandic')), ('it', gettext_noop('Italian')), ('ja', gettext_noop('Japanese')), ('ka', gettext_noop('Georgian')), - ('ko', gettext_noop('Korean')), ('km', gettext_noop('Khmer')), ('kn', gettext_noop('Kannada')), - ('lv', gettext_noop('Latvian')), + ('ko', gettext_noop('Korean')), ('lt', gettext_noop('Lithuanian')), + ('lv', gettext_noop('Latvian')), ('mk', gettext_noop('Macedonian')), + ('mn', gettext_noop('Mongolian')), ('nl', gettext_noop('Dutch')), ('no', gettext_noop('Norwegian')), + ('nb', gettext_noop('Norwegian Bokmal')), + ('nn', gettext_noop('Norwegian Nynorsk')), ('pl', gettext_noop('Polish')), ('pt', gettext_noop('Portuguese')), ('pt-br', gettext_noop('Brazilian Portuguese')), @@ -83,13 +89,16 @@ ('ru', gettext_noop('Russian')), ('sk', gettext_noop('Slovak')), ('sl', gettext_noop('Slovenian')), + ('sq', gettext_noop('Albanian')), ('sr', gettext_noop('Serbian')), + ('sr-latn', gettext_noop('Serbian Latin')), ('sv', gettext_noop('Swedish')), ('ta', gettext_noop('Tamil')), ('te', gettext_noop('Telugu')), ('th', gettext_noop('Thai')), ('tr', gettext_noop('Turkish')), ('uk', gettext_noop('Ukrainian')), + ('vi', gettext_noop('Vietnamese')), ('zh-cn', gettext_noop('Simplified Chinese')), ('zh-tw', gettext_noop('Traditional Chinese')), ) @@ -103,6 +112,10 @@ LOCALE_PATHS = () LANGUAGE_COOKIE_NAME = 'django_language' +# If you set this to True, Django will format dates, numbers and calendars +# according to user current locale +USE_L10N = False + # Not-necessarily-technical managers of the site. They get broken link # notifications and other various e-mails. MANAGERS = ADMINS @@ -123,6 +136,7 @@ SEND_BROKEN_LINK_EMAILS = False # Database connection info. +# Legacy format DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = '' # Or path to database file if using sqlite3. DATABASE_USER = '' # Not used with sqlite3. @@ -131,6 +145,19 @@ DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. DATABASE_OPTIONS = {} # Set to empty dictionary for default. +# New format +DATABASES = { +} + +# Classes used to implement db routing behaviour +DATABASE_ROUTERS = [] + +# The email backend to use. For possible shortcuts see django.core.mail. +# The default is to use the SMTP backend. +# Third-party backends can be specified by providing a Python path +# to a module that defines an EmailBackend class. +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' + # Host for sending e-mail. EMAIL_HOST = 'localhost' @@ -152,20 +179,21 @@ # See the comments in django/core/template/loader.py for interface # documentation. TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.load_template_source', - 'django.template.loaders.app_directories.load_template_source', -# 'django.template.loaders.eggs.load_template_source', + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', +# 'django.template.loaders.eggs.Loader', ) # List of processors used by RequestContext to populate the context. # Each one should be a callable that takes the request object as its # only parameter and returns a dictionary to add to the context. TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.core.context_processors.auth', + 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', # 'django.core.context_processors.request', + 'django.contrib.messages.context_processors.messages', ) # Output to use in template system for invalid (e.g. misspelled) variables. @@ -255,6 +283,12 @@ # you'd pass directly to os.chmod; see http://docs.python.org/lib/os-file-dir.html. FILE_UPLOAD_PERMISSIONS = None +# Python module path where user will place custom format definition. +# The directory where this setting is pointing should contain subdirectories +# named as the locales, containing a formats.py file +# (i.e. "myproject.locale" for myproject/locale/en/formats.py etc. use) +FORMAT_MODULE_PATH = None + # Default formatting for date objects. See all available format strings here: # http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now DATE_FORMAT = 'N j, Y' @@ -277,6 +311,70 @@ # http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now MONTH_DAY_FORMAT = 'F j' +# Default short formatting for date objects. See all available format strings here: +# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now +SHORT_DATE_FORMAT = 'm/d/Y' + +# Default short formatting for datetime objects. +# See all available format strings here: +# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now +SHORT_DATETIME_FORMAT = 'm/d/Y P' + +# Default formats to be used when parsing dates from input boxes, in order +# See all available format string here: +# http://docs.python.org/library/datetime.html#strftime-behavior +# * Note that these format strings are different from the ones to display dates +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' + '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' +) + +# Default formats to be used when parsing times from input boxes, in order +# See all available format string here: +# http://docs.python.org/library/datetime.html#strftime-behavior +# * Note that these format strings are different from the ones to display dates +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) + +# Default formats to be used when parsing dates and times from input boxes, +# in order +# See all available format string here: +# http://docs.python.org/library/datetime.html#strftime-behavior +# * Note that these format strings are different from the ones to display dates +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59' + '%m/%d/%Y %H:%M', # '10/25/2006 14:30' + '%m/%d/%Y', # '10/25/2006' + '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59' + '%m/%d/%y %H:%M', # '10/25/06 14:30' + '%m/%d/%y', # '10/25/06' +) + +# First day of week, to be used on calendars +# 0 means Sunday, 1 means Monday... +FIRST_DAY_OF_WEEK = 0 + +# Decimal separator symbol +DECIMAL_SEPARATOR = '.' + +# Boolean that sets whether to add thousand separator when formatting numbers +USE_THOUSAND_SEPARATOR = False + +# Number of digits that will be togheter, when spliting them by THOUSAND_SEPARATOR +# 0 means no grouping, 3 means splitting by thousands... +NUMBER_GROUPING = 0 + +# Thousand separator symbol +THOUSAND_SEPARATOR = ',' + # Do you want to manage transactions manually? # Hint: you really don't! TRANSACTIONS_MANAGED = False @@ -300,7 +398,9 @@ MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', # 'django.middleware.http.ConditionalGetMiddleware', # 'django.middleware.gzip.GZipMiddleware', ) @@ -374,12 +474,34 @@ # The number of days a password reset link is valid for PASSWORD_RESET_TIMEOUT_DAYS = 3 +######## +# CSRF # +######## + +# Dotted path to callable to be used as view when a request is +# rejected by the CSRF middleware. +CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure' + +# Name and domain for CSRF cookie. +CSRF_COOKIE_NAME = 'csrftoken' +CSRF_COOKIE_DOMAIN = None + +############ +# MESSAGES # +############ + +# Class to use as messges backend +MESSAGE_STORAGE = 'django.contrib.messages.storage.user_messages.LegacyFallbackStorage' + +# Default values of MESSAGE_LEVEL and MESSAGE_TAGS are defined within +# django.contrib.messages to avoid imports in this settings file. + ########### # TESTING # ########### -# The name of the method to use to invoke the test suite -TEST_RUNNER = 'django.test.simple.run_tests' +# The name of the class to use to run the test suite +TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner' # The name of the database to use for testing purposes. # If None, a name of 'test_' + DATABASE_NAME will be assumed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ar/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ar/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ar/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F، Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd‏/m‏/Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/bg/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/bg/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/bg/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd.m.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/bn/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/bn/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/bn/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F, Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M, Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/bs/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/bs/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/bs/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/bs/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5183 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-28 13:48+0200\n" +"PO-Revision-Date: 2010-04-28 13:45+0100\n" +"Last-Translator: Filip Dupanović \n" +"Language-Team: Filip Dupanović \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" + +#: .\conf\global_settings.py:44 +msgid "Arabic" +msgstr "arapski" + +#: .\conf\global_settings.py:45 +msgid "Bulgarian" +msgstr "bugarski" + +#: .\conf\global_settings.py:46 +msgid "Bengali" +msgstr "bengalski" + +#: .\conf\global_settings.py:47 +msgid "Bosnian" +msgstr "bosanski" + +#: .\conf\global_settings.py:48 +msgid "Catalan" +msgstr "katalonski" + +#: .\conf\global_settings.py:49 +msgid "Czech" +msgstr "češki" + +#: .\conf\global_settings.py:50 +msgid "Welsh" +msgstr "velški" + +#: .\conf\global_settings.py:51 +msgid "Danish" +msgstr "danski" + +#: .\conf\global_settings.py:52 +msgid "German" +msgstr "njemački" + +#: .\conf\global_settings.py:53 +msgid "Greek" +msgstr "grčki" + +#: .\conf\global_settings.py:54 +msgid "English" +msgstr "engleski" + +#: .\conf\global_settings.py:55 +msgid "Spanish" +msgstr "španski" + +#: .\conf\global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "argentinski španski" + +#: .\conf\global_settings.py:57 +msgid "Estonian" +msgstr "estonski" + +#: .\conf\global_settings.py:58 +msgid "Basque" +msgstr "baskijski" + +#: .\conf\global_settings.py:59 +msgid "Persian" +msgstr "persijski" + +#: .\conf\global_settings.py:60 +msgid "Finnish" +msgstr "finski" + +#: .\conf\global_settings.py:61 +msgid "French" +msgstr "francuski" + +#: .\conf\global_settings.py:62 +msgid "Frisian" +msgstr "frišanski" + +#: .\conf\global_settings.py:63 +msgid "Irish" +msgstr "irski" + +#: .\conf\global_settings.py:64 +msgid "Galician" +msgstr "galski" + +#: .\conf\global_settings.py:65 +msgid "Hebrew" +msgstr "hebrejski" + +#: .\conf\global_settings.py:66 +msgid "Hindi" +msgstr "hindi" + +#: .\conf\global_settings.py:67 +msgid "Croatian" +msgstr "hrvatski" + +#: .\conf\global_settings.py:68 +msgid "Hungarian" +msgstr "mađarski" + +#: .\conf\global_settings.py:69 +msgid "Icelandic" +msgstr "islandski" + +#: .\conf\global_settings.py:70 +msgid "Italian" +msgstr "italijanski" + +#: .\conf\global_settings.py:71 +msgid "Japanese" +msgstr "japanski" + +#: .\conf\global_settings.py:72 +msgid "Georgian" +msgstr "gruzijski" + +#: .\conf\global_settings.py:73 +msgid "Khmer" +msgstr "kambođanski" + +#: .\conf\global_settings.py:74 +msgid "Kannada" +msgstr "kanada" + +#: .\conf\global_settings.py:75 +msgid "Korean" +msgstr "korejski" + +#: .\conf\global_settings.py:76 +msgid "Lithuanian" +msgstr "litvanski" + +#: .\conf\global_settings.py:77 +msgid "Latvian" +msgstr "latvijski" + +#: .\conf\global_settings.py:78 +msgid "Macedonian" +msgstr "makedonski" + +#: .\conf\global_settings.py:79 +msgid "Dutch" +msgstr "holandski" + +#: .\conf\global_settings.py:80 +msgid "Norwegian" +msgstr "norveški" + +#: .\conf\global_settings.py:81 +msgid "Polish" +msgstr "poljski" + +#: .\conf\global_settings.py:82 +msgid "Portuguese" +msgstr "portugalski" + +#: .\conf\global_settings.py:83 +msgid "Brazilian Portuguese" +msgstr "brazilski portugalski" + +#: .\conf\global_settings.py:84 +msgid "Romanian" +msgstr "rumunski" + +#: .\conf\global_settings.py:85 +msgid "Russian" +msgstr "ruski" + +#: .\conf\global_settings.py:86 +msgid "Slovak" +msgstr "slovački" + +#: .\conf\global_settings.py:87 +msgid "Slovenian" +msgstr "slovenački" + +#: .\conf\global_settings.py:88 +msgid "Albanian" +msgstr "albanski" + +#: .\conf\global_settings.py:89 +msgid "Serbian" +msgstr "srpski" + +#: .\conf\global_settings.py:90 +msgid "Serbian Latin" +msgstr "srpski latinski" + +#: .\conf\global_settings.py:91 +msgid "Swedish" +msgstr "švedski" + +#: .\conf\global_settings.py:92 +msgid "Tamil" +msgstr "tamilski" + +#: .\conf\global_settings.py:93 +msgid "Telugu" +msgstr "telugu" + +#: .\conf\global_settings.py:94 +msgid "Thai" +msgstr "tajlandski" + +#: .\conf\global_settings.py:95 +msgid "Turkish" +msgstr "turski" + +#: .\conf\global_settings.py:96 +msgid "Ukrainian" +msgstr "ukrajinski" + +#: .\conf\global_settings.py:97 +msgid "Vietnamese" +msgstr "vijetnamežanski" + +#: .\conf\global_settings.py:98 +msgid "Simplified Chinese" +msgstr "novokineski" + +#: .\conf\global_settings.py:99 +msgid "Traditional Chinese" +msgstr "starokineski" + +#: .\contrib\admin\actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "Uspješno obrisano: %(count)d %(items)s." + +#: .\contrib\admin\actions.py:59 .\contrib\admin\options.py:1100 +msgid "Are you sure?" +msgstr "Da li ste sigurni?" + +#: .\contrib\admin\actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Briši označene objekte klase %(verbose_name_plural)s" + +#: .\contrib\admin\filterspecs.py:44 +#, python-format +msgid "" +"

    By %s:

    \n" +"
      \n" +msgstr "" +"

      %s:

      \n" +"
        \n" + +#: .\contrib\admin\filterspecs.py:75 .\contrib\admin\filterspecs.py:92 +#: .\contrib\admin\filterspecs.py:147 .\contrib\admin\filterspecs.py:173 +msgid "All" +msgstr "Svi" + +#: .\contrib\admin\filterspecs.py:113 +msgid "Any date" +msgstr "Svi datumi" + +#: .\contrib\admin\filterspecs.py:114 +msgid "Today" +msgstr "Danas" + +#: .\contrib\admin\filterspecs.py:117 +msgid "Past 7 days" +msgstr "Poslednjih 7 dana" + +#: .\contrib\admin\filterspecs.py:119 +msgid "This month" +msgstr "Ovaj mesec" + +#: .\contrib\admin\filterspecs.py:121 +msgid "This year" +msgstr "Ova godina" + +#: .\contrib\admin\filterspecs.py:147 .\forms\widgets.py:469 +msgid "Yes" +msgstr "Da" + +#: .\contrib\admin\filterspecs.py:147 .\forms\widgets.py:469 +msgid "No" +msgstr "Ne" + +#: .\contrib\admin\filterspecs.py:154 .\forms\widgets.py:469 +msgid "Unknown" +msgstr "Nepoznato" + +#: .\contrib\admin\helpers.py:20 +msgid "Action:" +msgstr "Radnja:" + +#: .\contrib\admin\models.py:19 +msgid "action time" +msgstr "vrijeme radnje" + +#: .\contrib\admin\models.py:22 +msgid "object id" +msgstr "id objekta" + +#: .\contrib\admin\models.py:23 +msgid "object repr" +msgstr "opis objekta" + +#: .\contrib\admin\models.py:24 +msgid "action flag" +msgstr "oznaka radnje" + +#: .\contrib\admin\models.py:25 +msgid "change message" +msgstr "opis izmjene" + +#: .\contrib\admin\models.py:28 +msgid "log entry" +msgstr "zapis u logovima" + +#: .\contrib\admin\models.py:29 +msgid "log entries" +msgstr "zapisi u logovima" + +#: .\contrib\admin\options.py:142 .\contrib\admin\options.py:157 +msgid "None" +msgstr "Ništa" + +#: .\contrib\admin\options.py:563 +#, python-format +msgid "Changed %s." +msgstr "Izmjenjena polja %s" + +#: .\contrib\admin\options.py:563 .\contrib\admin\options.py:573 +#: .\contrib\comments\templates\comments\preview.html.py:16 +#: .\db\models\base.py:844 .\forms\models.py:573 +msgid "and" +msgstr "i" + +#: .\contrib\admin\options.py:568 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "Sačuvan objekat „%(object)s“ klase %(name)s." + +#: .\contrib\admin\options.py:572 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "Izmjenjena polja %(list)s objekata „%(object)s“ klase %(name)s ." + +#: .\contrib\admin\options.py:577 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "Obrisan objekat „%(object)s“ klase %(name)s." + +#: .\contrib\admin\options.py:581 +msgid "No fields changed." +msgstr "Bez izmjena u poljima." + +#: .\contrib\admin\options.py:647 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "Objekat „%(obj)s“ klase %(name)s sačuvan je uspješno." + +#: .\contrib\admin\options.py:651 .\contrib\admin\options.py:684 +msgid "You may edit it again below." +msgstr "Dole možete ponovo unositi izmjene." + +#: .\contrib\admin\options.py:661 .\contrib\admin\options.py:694 +#, python-format +msgid "You may add another %s below." +msgstr "Dole možete dodati novi objekat klase %s" + +#: .\contrib\admin\options.py:682 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Objekat „%(obj)s“ klase %(name)s izmjenjen je uspješno." + +#: .\contrib\admin\options.py:690 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"Objekat „%(obj)s“ klase %(name)s dodat je uspješno. Dole možete unjeti " +"dodatne izmjene." + +#: .\contrib\admin\options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Predmeti moraju biti izabrani da bi se mogla obaviti akcija nad njima. " +"Nijedan predmet nije bio izmjenjen." + +#: .\contrib\admin\options.py:762 +msgid "No action selected." +msgstr "Nijedna akcija nije izabrana." + +#: .\contrib\admin\options.py:842 +#, python-format +msgid "Add %s" +msgstr "Dodaj objekat klase %s" + +#: .\contrib\admin\options.py:868 .\contrib\admin\options.py:1080 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objekat klase %(name)s sa primarnim ključem %(key)r ne postoji." + +#: .\contrib\admin\options.py:933 +#, python-format +msgid "Change %s" +msgstr "Izmjeni objekat klase %s" + +#: .\contrib\admin\options.py:978 +msgid "Database error" +msgstr "Greška u bazi podataka" + +#: .\contrib\admin\options.py:1014 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "%(count)s objekat klase %(name)s izmjenjen je uspješno." +msgstr[1] "%(count)s objekata klase %(name)s izmjenjeni su uspješno." +msgstr[2] "%(count)s objekta klase %(name)s izmjenjeno je uspješno." + +#: .\contrib\admin\options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s izabran" +msgstr[1] "%(total_count)s izabrana" +msgstr[2] "%(total_count)s izabrani" + +#: .\contrib\admin\options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 od %(cnt)s izabrani" + +#: .\contrib\admin\options.py:1093 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "Objekat „%(obj)s“ klase %(name)s obrisan je uspješno." + +#: .\contrib\admin\options.py:1130 +#, python-format +msgid "Change history: %s" +msgstr "Historijat izmjena: %s" + +#: .\contrib\admin\sites.py:22 .\contrib\admin\views\decorators.py:14 +#: .\contrib\auth\forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Unesite tačno korisničko ime i lozinku. Pazite na razliku izmjeđu malih i " +"velikih slova u oba polja" + +#: .\contrib\admin\sites.py:311 .\contrib\admin\views\decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "Prijavite se ponovo pošto je vaša sesija istekla." + +#: .\contrib\admin\sites.py:318 .\contrib\admin\views\decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Izgleda da vaš browser nije podešen da prima kolačiće. Uključite kolačiće, " +"osvježite ovu stranicu i probajte ponovo." + +#: .\contrib\admin\sites.py:334 .\contrib\admin\sites.py:340 +#: .\contrib\admin\views\decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "Korisnička imena ne smiju sadržati znak „@“." + +#: .\contrib\admin\sites.py:337 .\contrib\admin\views\decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Vaša email adresa nije vaše korisničko ime. Probajte sa „%s“." + +#: .\contrib\admin\sites.py:393 +msgid "Site administration" +msgstr "Administracija sistema" + +#: .\contrib\admin\sites.py:407 +#: .\contrib\admin\templates\admin\login.html.py:26 +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:14 +#: .\contrib\admin\views\decorators.py:20 +msgid "Log in" +msgstr "Prijava" + +#: .\contrib\admin\sites.py:452 +#, python-format +msgid "%s administration" +msgstr "Administracija %s" + +#: .\contrib\admin\widgets.py:75 +msgid "Date:" +msgstr "Datum:" + +#: .\contrib\admin\widgets.py:75 +msgid "Time:" +msgstr "Vrijeme:" + +#: .\contrib\admin\widgets.py:99 +msgid "Currently:" +msgstr "Trenutno:" + +#: .\contrib\admin\widgets.py:99 +msgid "Change:" +msgstr "Izmjena:" + +#: .\contrib\admin\widgets.py:129 +msgid "Lookup" +msgstr "Pretraži" + +#: .\contrib\admin\widgets.py:244 +msgid "Add Another" +msgstr "Dodaj još jedan" + +#: .\contrib\admin\templates\admin\404.html.py:4 +#: .\contrib\admin\templates\admin\404.html.py:8 +msgid "Page not found" +msgstr "Stranica nije pronađena" + +#: .\contrib\admin\templates\admin\404.html.py:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Žao nam je, tražena stranica nije pronađena." + +#: .\contrib\admin\templates\admin\500.html.py:4 +#: .\contrib\admin\templates\admin\app_index.html.py:8 +#: .\contrib\admin\templates\admin\base.html.py:55 +#: .\contrib\admin\templates\admin\change_form.html.py:18 +#: .\contrib\admin\templates\admin\change_list.html.py:42 +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:6 +#: .\contrib\admin\templates\admin\delete_selected_confirmation.html.py:6 +#: .\contrib\admin\templates\admin\invalid_setup.html.py:4 +#: .\contrib\admin\templates\admin\object_history.html.py:6 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:11 +#: .\contrib\admin\templates\registration\logged_out.html.py:4 +#: .\contrib\admin\templates\registration\password_change_done.html.py:4 +#: .\contrib\admin\templates\registration\password_change_form.html.py:5 +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_done.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:4 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:3 +msgid "Home" +msgstr "Početna" + +#: .\contrib\admin\templates\admin\500.html.py:4 +msgid "Server error" +msgstr "Greška na serveru" + +#: .\contrib\admin\templates\admin\500.html.py:6 +msgid "Server error (500)" +msgstr "Greška na serveru (500)" + +#: .\contrib\admin\templates\admin\500.html.py:9 +msgid "Server Error (500)" +msgstr "Greška na serveru (500)" + +#: .\contrib\admin\templates\admin\500.html.py: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 "" +"Došlo je do greške. Administrator sajta je obavešten emailom i greška će " +"biti uskoro otklonjena. Hvala na strpljenju." + +#: .\contrib\admin\templates\admin\actions.html.py:4 +msgid "Run the selected action" +msgstr "Pokreni odabranu radnju" + +#: .\contrib\admin\templates\admin\actions.html.py:4 +msgid "Go" +msgstr "Počni" + +#: .\contrib\admin\templates\admin\actions.html.py:11 +msgid "Click here to select the objects across all pages" +msgstr "Kliknite ovdje da izaberete objekte preko svih stranica" + +#: .\contrib\admin\templates\admin\actions.html.py:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Izaberite svih %(total_count)s %(module_name)s" + +#: .\contrib\admin\templates\admin\actions.html.py:13 +msgid "Clear selection" +msgstr "Izbrišite izbor" + +#: .\contrib\admin\templates\admin\app_index.html.py:10 +#: .\contrib\admin\templates\admin\index.html.py:19 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: .\contrib\admin\templates\admin\base.html.py:28 +msgid "Welcome," +msgstr "Dobrodošli," + +#: .\contrib\admin\templates\admin\base.html.py:33 +#: .\contrib\admin\templates\registration\password_change_done.html.py:3 +#: .\contrib\admin\templates\registration\password_change_form.html.py:4 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:3 +msgid "Documentation" +msgstr "Dokumentacija" + +#: .\contrib\admin\templates\admin\base.html.py:41 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:15 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:48 +#: .\contrib\admin\templates\registration\password_change_done.html.py:3 +#: .\contrib\admin\templates\registration\password_change_form.html.py:4 +msgid "Change password" +msgstr "Promjena lozinke" + +#: .\contrib\admin\templates\admin\base.html.py:48 +#: .\contrib\admin\templates\registration\password_change_done.html.py:3 +#: .\contrib\admin\templates\registration\password_change_form.html.py:4 +msgid "Log out" +msgstr "Odjava" + +#: .\contrib\admin\templates\admin\base_site.html.py:4 +msgid "Django site admin" +msgstr "Django administracija sajta" + +#: .\contrib\admin\templates\admin\base_site.html.py:7 +msgid "Django administration" +msgstr "Django administracija" + +#: .\contrib\admin\templates\admin\change_form.html.py:21 +#: .\contrib\admin\templates\admin\index.html.py:29 +msgid "Add" +msgstr "Dodaj" + +#: .\contrib\admin\templates\admin\change_form.html.py:28 +#: .\contrib\admin\templates\admin\object_history.html.py:10 +msgid "History" +msgstr "Historijat" + +#: .\contrib\admin\templates\admin\change_form.html.py:29 +#: .\contrib\admin\templates\admin\edit_inline\stacked.html.py:9 +#: .\contrib\admin\templates\admin\edit_inline\tabular.html.py:28 +msgid "View on site" +msgstr "Pregled na sajtu" + +#: .\contrib\admin\templates\admin\change_form.html.py:39 +#: .\contrib\admin\templates\admin\change_list.html.py:71 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:24 +#: .\contrib\admin\templates\registration\password_change_form.html.py:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ispravite grešku dole." +msgstr[1] "Ispravite greške dole." +msgstr[2] "Ispravite greške dole." + +#: .\contrib\admin\templates\admin\change_list.html.py:63 +#, python-format +msgid "Add %(name)s" +msgstr "Dodaj objekat klase %(name)s" + +#: .\contrib\admin\templates\admin\change_list.html.py:82 +msgid "Filter" +msgstr "Filter" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:10 +#: .\contrib\admin\templates\admin\submit_line.html.py:4 +#: .\forms\formsets.py:302 +msgid "Delete" +msgstr "Obriši" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Uklanjanje %(object_name)s „%(escaped_object)s“ povlači uklanjanje svih " +"objekata koji su povezani sa ovim objektom, ali vaš nalog nema dozvole za " +"brisanje slijedećih tipova objekata:" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Da li ste sigurni da želite da obrišete %(object_name)s „%(escaped_object)" +"s“? Slijedeći objekti koji su u vezi sa ovim objektom će također biti " +"obrisani:" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:28 +#: .\contrib\admin\templates\admin\delete_selected_confirmation.html.py:33 +msgid "Yes, I'm sure" +msgstr "Da, siguran sam" + +#: .\contrib\admin\templates\admin\delete_selected_confirmation.html.py:9 +msgid "Delete multiple objects" +msgstr "Brisanje više objekata" + +#: .\contrib\admin\templates\admin\delete_selected_confirmation.html.py:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"Uklanjanje %(object_name)s povlači uklanjanje svih objekata koji su povezani " +"sa ovim objektom, ali vaš nalog nema dozvole za brisanje slijedećih tipova " +"objekata:" + +#: .\contrib\admin\templates\admin\delete_selected_confirmation.html.py:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Da li ste sigurni da želite da obrišete odabrane %(object_name)s? Slijedeći " +"objekti koji su u vezi sa ovim objektom će također biti obrisani:" + +#: .\contrib\admin\templates\admin\filter.html.py:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s " + +#: .\contrib\admin\templates\admin\index.html.py:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modeli dostupni u aplikaciji %(name)s." + +#: .\contrib\admin\templates\admin\index.html.py:35 +msgid "Change" +msgstr "Izmjeni" + +#: .\contrib\admin\templates\admin\index.html.py:45 +msgid "You don't have permission to edit anything." +msgstr "Nemate dozvole da unosite bilo kakve izmjene." + +#: .\contrib\admin\templates\admin\index.html.py:53 +msgid "Recent Actions" +msgstr "Posjlednje radnje" + +#: .\contrib\admin\templates\admin\index.html.py:54 +msgid "My Actions" +msgstr "Moje radnje" + +#: .\contrib\admin\templates\admin\index.html.py:58 +msgid "None available" +msgstr "Nema podataka" + +#: .\contrib\admin\templates\admin\index.html.py:72 +msgid "Unknown content" +msgstr "Nepoznat sadržaj" + +#: .\contrib\admin\templates\admin\invalid_setup.html.py:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Nešto nije uredu sa vašom bazom podataka. Provjerite da li postoje " +"odgovarajuće tabele i da li odgovarajući korisnik ima pristup bazi." + +#: .\contrib\admin\templates\admin\login.html.py:19 +msgid "Username:" +msgstr "Korisnik:" + +#: .\contrib\admin\templates\admin\login.html.py:22 +msgid "Password:" +msgstr "Lozinka:" + +#: .\contrib\admin\templates\admin\object_history.html.py:22 +msgid "Date/time" +msgstr "Datum/vrijeme" + +#: .\contrib\admin\templates\admin\object_history.html.py:23 +msgid "User" +msgstr "Korisnik" + +#: .\contrib\admin\templates\admin\object_history.html.py:24 +msgid "Action" +msgstr "Radnja" + +#: .\contrib\admin\templates\admin\object_history.html.py:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Ovaj objekat nema zabilježen historijat izmjena. Vjerovatno nije dodan kroz " +"ovaj sajt za administraciju." + +#: .\contrib\admin\templates\admin\pagination.html.py:10 +msgid "Show all" +msgstr "Prikaži sve" + +#: .\contrib\admin\templates\admin\pagination.html.py:11 +#: .\contrib\admin\templates\admin\submit_line.html.py:3 +msgid "Save" +msgstr "Sačuvaj" + +#: .\contrib\admin\templates\admin\search_form.html.py:8 +msgid "Search" +msgstr "Pretraga" + +#: .\contrib\admin\templates\admin\search_form.html.py:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 rezultat" +msgstr[1] "%(counter)s rezultata" +msgstr[2] "%(counter)s rezultata" + +#: .\contrib\admin\templates\admin\search_form.html.py:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "ukupno %(full_result_count)s" + +#: .\contrib\admin\templates\admin\submit_line.html.py:5 +msgid "Save as new" +msgstr "Sačuvaj kao novi" + +#: .\contrib\admin\templates\admin\submit_line.html.py:6 +msgid "Save and add another" +msgstr "Sačuvaj i dodaj slijedeći" + +#: .\contrib\admin\templates\admin\submit_line.html.py:7 +msgid "Save and continue editing" +msgstr "Sačuvaj i nastavi sa izmjenama" + +#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Prvo unesite korisničko ime i lozinku. Potom ćete moći da mijenjate još " +"korisničkih podešavanja." + +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Unesite novu lozinku za korisnika %(username)s." + +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:35 +#: .\contrib\auth\forms.py:17 .\contrib\auth\forms.py:61 +#: .\contrib\auth\forms.py:186 +msgid "Password" +msgstr "Lozinka" + +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:41 +#: .\contrib\admin\templates\registration\password_change_form.html.py:37 +#: .\contrib\auth\forms.py:187 +msgid "Password (again)" +msgstr "Lozinka (ponovite)" + +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:42 +#: .\contrib\auth\forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Radi provjere tačnosti ponovo unesite lozinku koju ste unijeli gore." + +#: .\contrib\admin\templates\admin\edit_inline\stacked.html.py:64 +#: .\contrib\admin\templates\admin\edit_inline\tabular.html.py:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Dodaj još jedan %(verbose_name)s" + +#: .\contrib\admin\templates\admin\edit_inline\stacked.html.py:67 +#: .\contrib\admin\templates\admin\edit_inline\tabular.html.py:113 +#: .\contrib\comments\templates\comments\delete.html.py:12 +msgid "Remove" +msgstr "Obriši" + +#: .\contrib\admin\templates\admin\edit_inline\tabular.html.py:15 +msgid "Delete?" +msgstr "Brisanje?" + +#: .\contrib\admin\templates\registration\logged_out.html.py:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Hvala što ste danas proveli vrijeme na ovom sajtu." + +#: .\contrib\admin\templates\registration\logged_out.html.py:10 +msgid "Log in again" +msgstr "Ponovna prijava" + +#: .\contrib\admin\templates\registration\password_change_done.html.py:4 +#: .\contrib\admin\templates\registration\password_change_form.html.py:5 +#: .\contrib\admin\templates\registration\password_change_form.html.py:7 +#: .\contrib\admin\templates\registration\password_change_form.html.py:19 +msgid "Password change" +msgstr "Izmjena lozinke" + +#: .\contrib\admin\templates\registration\password_change_done.html.py:6 +#: .\contrib\admin\templates\registration\password_change_done.html.py:10 +msgid "Password change successful" +msgstr "uspješna izmjena lozinke" + +#: .\contrib\admin\templates\registration\password_change_done.html.py:12 +msgid "Your password was changed." +msgstr "Vaša lozinka je izmjenjena." + +#: .\contrib\admin\templates\registration\password_change_form.html.py:21 +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 "" +"Iz bezbjednosnih razloga prvo unesite svoju staru lozinku, a novu zatim " +"unesite dva puta da bismo mogli da provjerimo da li ste je pravilno unijeli." + +#: .\contrib\admin\templates\registration\password_change_form.html.py:27 +#: .\contrib\auth\forms.py:170 +msgid "Old password" +msgstr "Stara lozinka" + +#: .\contrib\admin\templates\registration\password_change_form.html.py:32 +#: .\contrib\auth\forms.py:144 +msgid "New password" +msgstr "Nova lozinka" + +#: .\contrib\admin\templates\registration\password_change_form.html.py:43 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:21 +msgid "Change my password" +msgstr "Izmijeni moju lozinku" + +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_done.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:10 +msgid "Password reset" +msgstr "Resetovanje lozinke" + +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:10 +msgid "Password reset complete" +msgstr "Resetovanje lozinke uspješno" + +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Vaša lozinka je postavljena. Možete se prijaviti." + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:4 +msgid "Password reset confirmation" +msgstr "Potvrda resetovanja lozinke" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:12 +msgid "Enter new password" +msgstr "Unesite novu lozinku" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Unesite novu lozinku dva puta kako bismo mogli da provjerimo da li ste je " +"pravilno unijeli." + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:18 +msgid "New password:" +msgstr "Nova lozinka:" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:20 +msgid "Confirm password:" +msgstr "Potvrda lozinke:" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:26 +msgid "Password reset unsuccessful" +msgstr "Resetovanje lozinke neuspješno" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Link za resetovanje lozinke nije važeći, vjerovatno zato što je već " +"iskorišćen. Ponovo zatražite resetovanje lozinke." + +#: .\contrib\admin\templates\registration\password_reset_done.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_done.html.py:10 +msgid "Password reset successful" +msgstr "Resetovanje lozinke uspješno." + +#: .\contrib\admin\templates\registration\password_reset_done.html.py:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Poslali smo uputstva za postavljanje nove lozinke na email adresu koju ste " +"nam dali. Uputstva ćete dobiti uskoro." + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Ovu poruku ste primili zato što ste zahtijevali resetovanje lozinke" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "za vaš korisnički nalog na sajtu %(site_name)s" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:5 +msgid "Please go to the following page and choose a new password:" +msgstr "Idite na slijedeću stranicu i postavite novu lozinku." + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:9 +msgid "Your username, in case you've forgotten:" +msgstr "Ukoliko ste zaboravili, vaše korisničko ime:" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:11 +msgid "Thanks for using our site!" +msgstr "Hvala što koristite naš sajt!" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "Uredništvo sajta %(site_name)s" + +#: .\contrib\admin\templates\registration\password_reset_form.html.py:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" +"Zaboravili ste lozinku? Unesite svoju email adresu dole i poslaćemo vam " +"uputstva za postavljanje nove." + +#: .\contrib\admin\templates\registration\password_reset_form.html.py:16 +msgid "E-mail address:" +msgstr "Email adresa:" + +#: .\contrib\admin\templates\registration\password_reset_form.html.py:16 +msgid "Reset my password" +msgstr "Resetuj moju lozinku" + +#: .\contrib\admin\templatetags\admin_list.py:239 +msgid "All dates" +msgstr "Svi datumi" + +#: .\contrib\admin\views\main.py:70 +#, python-format +msgid "Select %s" +msgstr "Odaberi objekat klase %s" + +#: .\contrib\admin\views\main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "Odaberi objekat klase %s za izmjenu" + +#: .\contrib\admin\views\template.py:38 .\contrib\sites\models.py:38 +msgid "site" +msgstr "sajt" + +#: .\contrib\admin\views\template.py:40 +msgid "template" +msgstr "obrazac" + +#: .\contrib\admindocs\views.py:61 .\contrib\admindocs\views.py:63 +#: .\contrib\admindocs\views.py:65 +msgid "tag:" +msgstr "tag:" + +#: .\contrib\admindocs\views.py:94 .\contrib\admindocs\views.py:96 +#: .\contrib\admindocs\views.py:98 +msgid "filter:" +msgstr "filter:" + +#: .\contrib\admindocs\views.py:158 .\contrib\admindocs\views.py:160 +#: .\contrib\admindocs\views.py:162 +msgid "view:" +msgstr "pogled:" + +#: .\contrib\admindocs\views.py:190 +#, python-format +msgid "App %r not found" +msgstr "Aplikacija %r nije pronađena" + +#: .\contrib\admindocs\views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "Model %(model_name)r nije pronađen u aplikaciji %(app_label)r" + +#: .\contrib\admindocs\views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "povezani objekti klase `%(app_label)s.%(data_type)s`" + +#: .\contrib\admindocs\views.py:209 .\contrib\admindocs\views.py:228 +#: .\contrib\admindocs\views.py:233 .\contrib\admindocs\views.py:247 +#: .\contrib\admindocs\views.py:261 .\contrib\admindocs\views.py:266 +msgid "model:" +msgstr "model:" + +# WARN: possible breakage in future +# This string is interpolated in strings below, which can cause breakage in +# future releases. +#: .\contrib\admindocs\views.py:224 .\contrib\admindocs\views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "klase `%(app_label)s.%(object_name)s`" + +# WARN: possible breakage in future +#: .\contrib\admindocs\views.py:228 .\contrib\admindocs\views.py:261 +#, python-format +msgid "all %s" +msgstr "svi povezani objekti %s" + +# WARN: possible breakage in future +#: .\contrib\admindocs\views.py:233 .\contrib\admindocs\views.py:266 +#, python-format +msgid "number of %s" +msgstr "broj povezanih objekata %s" + +# WARN: possible breakage in future +#: .\contrib\admindocs\views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "Polja u povezanim objektima %s" + +#: .\contrib\admindocs\views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ne izgleda kao urlpattern objekat" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:3 +msgid "Bookmarklets" +msgstr "Bookmarkleti" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:4 +msgid "Documentation bookmarklets" +msgstr "Bookmarkleti dokumentacije" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:8 +msgid "" +"\n" +"

        To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

        \n" +msgstr "" +"\n" +"

        Da biste instalirali bookmarklet, prevucite link do " +"svojih\n" +"bookmarka ili kliknite desnim dugmetom i dodajte među bookmarke. Nakon toga\n" +"bookmarkletima možete pristupiti sa svake stranice na sajtu. Imajte na umu\n" +"da neki bookmarkleti zahtijevaju da sajtu pristupite sa računara koji su\n" +"označeni kao „interni“ (pitajte administratora vašeg sistema ukoliko niste\n" +"sigurni da li je vaš računar „interni“).

        \n" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:18 +msgid "Documentation for this page" +msgstr "Dokumentacija za ovu stranicu" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Vodi od bilo koje stranice do dokumentacije za pogled koji generiše tu " +"stranicu." + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:21 +msgid "Show object ID" +msgstr "Prikaži ID objekta" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Prikazuje content-type i jedinstveni ID za stranicu koja predstavlja jedan " +"objekat." + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:24 +msgid "Edit this object (current window)" +msgstr "Izmjeni ovaj objekat (u ovom prozoru)" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Vodi u administracioni stranicu za stranice koje prestavljaju jedan objekat" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:27 +msgid "Edit this object (new window)" +msgstr "Izmjeni ovaj objekat (novi prozor)" + +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:28 +msgid "As above, but opens the admin page in a new window." +msgstr "" +"Isto kao prethodni, ali otvara administracionu stranicu u novom prozoru." + +#: .\contrib\auth\admin.py:29 +msgid "Personal info" +msgstr "Lični podaci" + +#: .\contrib\auth\admin.py:30 +msgid "Permissions" +msgstr "Dozvole" + +#: .\contrib\auth\admin.py:31 +msgid "Important dates" +msgstr "Važni datumi" + +#: .\contrib\auth\admin.py:32 +msgid "Groups" +msgstr "Grupe" + +#: .\contrib\auth\admin.py:114 +msgid "Password changed successfully." +msgstr "Lozinka uspješno izmjenjena." + +#: .\contrib\auth\admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "Izmjeni lozinku: %s" + +#: .\contrib\auth\forms.py:14 .\contrib\auth\forms.py:48 +#: .\contrib\auth\forms.py:60 +msgid "Username" +msgstr "Korisnik" + +#: .\contrib\auth\forms.py:15 .\contrib\auth\forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Neophodno. Najviše 30 slovnih mesta. Samo slova, brojke i @/./+/-/_ only." + +#: .\contrib\auth\forms.py:16 .\contrib\auth\forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "" +"Ova vrijednost može sadržati samo slova, brojke i digits and @/./+/-/_ " +"znamenke." + +#: .\contrib\auth\forms.py:18 +msgid "Password confirmation" +msgstr "Potvrda lozinke" + +#: .\contrib\auth\forms.py:31 +msgid "A user with that username already exists." +msgstr "Korisnik sa tim korisničkim imenom već postoji." + +#: .\contrib\auth\forms.py:37 .\contrib\auth\forms.py:156 +#: .\contrib\auth\forms.py:198 +msgid "The two password fields didn't match." +msgstr "Dva polja za lozinku se nisu poklopila." + +#: .\contrib\auth\forms.py:83 +msgid "This account is inactive." +msgstr "Ovaj nalog je neaktivan." + +#: .\contrib\auth\forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Izgleda da su kolačići isključeni u vašem browser-u. Oni moraju biti " +"uključeni da bi ste se prijavili." + +#: .\contrib\auth\forms.py:101 +msgid "E-mail" +msgstr "Email adresa" + +#: .\contrib\auth\forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Ta email adresa nije u vezi ni sa jednim nalogom. Da li ste sigurni da ste " +"se već registrovali?" + +#: .\contrib\auth\forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "Resetovanje lozinke na %s" + +#: .\contrib\auth\forms.py:145 +msgid "New password confirmation" +msgstr "Potvrda nove lozinke" + +#: .\contrib\auth\forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Vaša stara lozinka nije pravilno unesena. Unesite je ponovo." + +#: .\contrib\auth\models.py:66 .\contrib\auth\models.py:94 +msgid "name" +msgstr "ime" + +#: .\contrib\auth\models.py:68 +msgid "codename" +msgstr "šifra dozvole" + +#: .\contrib\auth\models.py:72 +msgid "permission" +msgstr "dozvola" + +#: .\contrib\auth\models.py:73 .\contrib\auth\models.py:95 +msgid "permissions" +msgstr "dozvole" + +#: .\contrib\auth\models.py:98 +msgid "group" +msgstr "grupa" + +#: .\contrib\auth\models.py:99 .\contrib\auth\models.py:206 +msgid "groups" +msgstr "grupe" + +#: .\contrib\auth\models.py:196 +msgid "username" +msgstr "korisničko ime" + +#: .\contrib\auth\models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Neophodno. Najviše 30 slovnih mesta. Slova, brojke i @/./+/-/_ karakteri" + +#: .\contrib\auth\models.py:197 +msgid "first name" +msgstr "ime" + +#: .\contrib\auth\models.py:198 +msgid "last name" +msgstr "prezime" + +#: .\contrib\auth\models.py:199 +msgid "e-mail address" +msgstr "email adresa" + +#: .\contrib\auth\models.py:200 +msgid "password" +msgstr "lozinka" + +#: .\contrib\auth\models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Koristite '[algo]$[salt]$[hexdigest]' ili formular za " +"unos lozinke." + +#: .\contrib\auth\models.py:201 +msgid "staff status" +msgstr "status člana uredništva" + +#: .\contrib\auth\models.py:201 +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Označava da li korisnik može da se prijavi na ovaj sajt za administraciju." + +#: .\contrib\auth\models.py:202 +msgid "active" +msgstr "aktivan" + +#: .\contrib\auth\models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Označava da li se korisnik smatra aktivnim. Uklnote izbor sa ovog polja " +"umjesto da brišete nalog." + +#: .\contrib\auth\models.py:203 +msgid "superuser status" +msgstr "status administratora" + +#: .\contrib\auth\models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Označava da li korisnik ima sve dozvole bez dodjeljivanja pojedinačnih " +"dozvola." + +#: .\contrib\auth\models.py:204 +msgid "last login" +msgstr "posljednja prijava" + +#: .\contrib\auth\models.py:205 +msgid "date joined" +msgstr "datum registracije" + +#: .\contrib\auth\models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Pored ručno dodijeljenih dozvola, ovaj korisnik će imati i dozvole " +"dodijeljene gurpama kojima pripada." + +#: .\contrib\auth\models.py:208 +msgid "user permissions" +msgstr "korisničke dozvole" + +#: .\contrib\auth\models.py:212 .\contrib\comments\models.py:50 +#: .\contrib\comments\models.py:168 +msgid "user" +msgstr "korisnik" + +#: .\contrib\auth\models.py:213 +msgid "users" +msgstr "korisnici" + +#: .\contrib\auth\models.py:394 +msgid "message" +msgstr "poruka" + +#: .\contrib\auth\views.py:79 +msgid "Logged out" +msgstr "Odjavljen" + +#: .\contrib\auth\management\commands\createsuperuser.py:23 +#: .\core\validators.py:120 .\forms\fields.py:428 +msgid "Enter a valid e-mail address." +msgstr "Unesite važeću email adresu." + +#: .\contrib\comments\admin.py:12 +msgid "Content" +msgstr "Sadržaj" + +#: .\contrib\comments\admin.py:15 +msgid "Metadata" +msgstr "Metapodaci" + +#: .\contrib\comments\admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "oznaka" +msgstr[1] "oznake" +msgstr[2] "oznaka" + +#: .\contrib\comments\admin.py:41 +msgid "Flag selected comments" +msgstr "Označite izabrane komentare" + +#: .\contrib\comments\admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "odobren" +msgstr[1] "odobrena" +msgstr[2] "odobreno" + +#: .\contrib\comments\admin.py:46 +msgid "Approve selected comments" +msgstr "Odobri izabrane komentare" + +#: .\contrib\comments\admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "uklonjen" +msgstr[1] "uklonjena" +msgstr[2] "uklonjeno" + +#: .\contrib\comments\admin.py:51 +msgid "Remove selected comments" +msgstr "Obriši izabrane komentare" + +#: .\contrib\comments\admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 komentar je uspješno %(action)s." +msgstr[1] "%(count)s komentara su uspješno %(action)s." +msgstr[2] "%(count)s komentara su uspješno %(action)s." + +#: .\contrib\comments\feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "Komentari na sajtu %(site_name)s" + +#: .\contrib\comments\feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "Skoriji komentari na sajtu %(site_name)s" + +#: .\contrib\comments\forms.py:93 +msgid "Name" +msgstr "Ime" + +#: .\contrib\comments\forms.py:94 +msgid "Email address" +msgstr "Email adresa" + +#: .\contrib\comments\forms.py:95 .\contrib\flatpages\admin.py:8 +#: .\contrib\flatpages\models.py:7 .\db\models\fields\__init__.py:1101 +msgid "URL" +msgstr "URL" + +#: .\contrib\comments\forms.py:96 +msgid "Comment" +msgstr "Komentari" + +#: .\contrib\comments\forms.py:175 +#, 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] "Pazi na jezik! Riječ „%s“ ovdje nije dozvoljena." +msgstr[1] "Pazi na jezik! Riječi „%s“ ovdje nisu dozvoljene." +msgstr[2] "Pazi na jezik! Riječi „%s“ ovdje nisu dozvoljene." + +#: .\contrib\comments\forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "Ako bilo šta unesete u ovo polje, Vaš komentar će se smatrati spamom." + +#: .\contrib\comments\models.py:22 .\contrib\contenttypes\models.py:81 +msgid "content type" +msgstr "tip sadržaja" + +#: .\contrib\comments\models.py:24 +msgid "object ID" +msgstr "ID objekta" + +#: .\contrib\comments\models.py:52 +msgid "user's name" +msgstr "korisnikovo ime" + +#: .\contrib\comments\models.py:53 +msgid "user's email address" +msgstr "korisnikova email adresa" + +#: .\contrib\comments\models.py:54 +msgid "user's URL" +msgstr "korisnikov URL" + +#: .\contrib\comments\models.py:56 .\contrib\comments\models.py:76 +#: .\contrib\comments\models.py:169 +msgid "comment" +msgstr "komentar" + +#: .\contrib\comments\models.py:59 +msgid "date/time submitted" +msgstr "datum/vrijeme postavljanja" + +#: .\contrib\comments\models.py:60 .\db\models\fields\__init__.py:896 +msgid "IP address" +msgstr "IP adresa" + +#: .\contrib\comments\models.py:61 +msgid "is public" +msgstr "javno" + +#: .\contrib\comments\models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "" +"Uklonite izbor ovog polja ako želite da poruka faktični nestane sa ovog " +"sajta." + +#: .\contrib\comments\models.py:64 +msgid "is removed" +msgstr "uklonjen" + +#: .\contrib\comments\models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Obilježite ovu polje ako je komentar neprikladan. Poruka o uklanjanju će " +"biti prikazana umjesto komentara." + +#: .\contrib\comments\models.py:77 +msgid "comments" +msgstr "komentari" + +#: .\contrib\comments\models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" +"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imenom " +"zaključano." + +#: .\contrib\comments\models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" +"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa email " +"adresom zaključano." + +#: .\contrib\comments\models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Postavio %(user)s, %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: .\contrib\comments\models.py:170 +msgid "flag" +msgstr "oznaka" + +#: .\contrib\comments\models.py:171 +msgid "date" +msgstr "datum" + +#: .\contrib\comments\models.py:181 +msgid "comment flag" +msgstr "oznaka komentara" + +#: .\contrib\comments\models.py:182 +msgid "comment flags" +msgstr "oznake komentara" + +#: .\contrib\comments\templates\comments\approve.html.py:4 +msgid "Approve a comment" +msgstr "Odobrenje komentara" + +#: .\contrib\comments\templates\comments\approve.html.py:7 +msgid "Really make this comment public?" +msgstr "Da li zaista želite da označite ovaj komentar javnim?" + +#: .\contrib\comments\templates\comments\approve.html.py:12 +msgid "Approve" +msgstr "Odobri" + +#: .\contrib\comments\templates\comments\approved.html.py:4 +msgid "Thanks for approving" +msgstr "Hvala na odobrenju!" + +#: .\contrib\comments\templates\comments\approved.html.py:7 +#: .\contrib\comments\templates\comments\deleted.html.py:7 +#: .\contrib\comments\templates\comments\flagged.html.py:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "Hvala na učešću u unapređenju kvaliteta diskusija na našem sajtu." + +#: .\contrib\comments\templates\comments\delete.html.py:4 +msgid "Remove a comment" +msgstr "Obriši komentar" + +#: .\contrib\comments\templates\comments\delete.html.py:7 +msgid "Really remove this comment?" +msgstr "Da li zaista želite da obrišete ovaj komentar?" + +#: .\contrib\comments\templates\comments\deleted.html.py:4 +msgid "Thanks for removing" +msgstr "Hvala što koristite naš sajt!" + +#: .\contrib\comments\templates\comments\flag.html.py:4 +msgid "Flag this comment" +msgstr "Označavanje komentara" + +#: .\contrib\comments\templates\comments\flag.html.py:7 +msgid "Really flag this comment?" +msgstr "Da li zaista želite da označite ovaj komentar?" + +#: .\contrib\comments\templates\comments\flag.html.py:12 +msgid "Flag" +msgstr "Označi" + +#: .\contrib\comments\templates\comments\flagged.html.py:4 +msgid "Thanks for flagging" +msgstr "Hvala što ste označili komentar." + +#: .\contrib\comments\templates\comments\form.html.py:17 +#: .\contrib\comments\templates\comments\preview.html.py:32 +msgid "Post" +msgstr "Postavi" + +#: .\contrib\comments\templates\comments\form.html.py:18 +#: .\contrib\comments\templates\comments\preview.html.py:33 +msgid "Preview" +msgstr "Pregled" + +#: .\contrib\comments\templates\comments\posted.html.py:4 +msgid "Thanks for commenting" +msgstr "Hvala na komentaru" + +#: .\contrib\comments\templates\comments\posted.html.py:7 +msgid "Thank you for your comment" +msgstr "Hvala što ste ostavili svoj komentar" + +#: .\contrib\comments\templates\comments\preview.html.py:4 +#: .\contrib\comments\templates\comments\preview.html.py:13 +msgid "Preview your comment" +msgstr "Pregledaj komentar" + +#: .\contrib\comments\templates\comments\preview.html.py:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Ispravite grešku dole." +msgstr[1] "Ispravite greške dole." +msgstr[2] "Ispravite greške dole." + +#: .\contrib\comments\templates\comments\preview.html.py:16 +msgid "Post your comment" +msgstr "Postavi komentar" + +#: .\contrib\comments\templates\comments\preview.html.py:16 +msgid "or make changes" +msgstr "ili izvrši izmjene" + +#: .\contrib\contenttypes\models.py:77 +msgid "python model class name" +msgstr "ime python klase modela" + +#: .\contrib\contenttypes\models.py:82 +msgid "content types" +msgstr "tipovi sadržaja" + +#: .\contrib\flatpages\admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Primjer: '/about/contact/'. Pazite na to da postoje i početne i završne kose " +"crte." + +#: .\contrib\flatpages\admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Ova vrijednost može sadržati samo slova, brojke, donje crte, crtice ili kose " +"crte." + +#: .\contrib\flatpages\admin.py:22 +msgid "Advanced options" +msgstr "Napredne postavke" + +#: .\contrib\flatpages\models.py:8 +msgid "title" +msgstr "naslov" + +#: .\contrib\flatpages\models.py:9 +msgid "content" +msgstr "sadržaj" + +#: .\contrib\flatpages\models.py:10 +msgid "enable comments" +msgstr "omogući komentare" + +#: .\contrib\flatpages\models.py:11 +msgid "template name" +msgstr "naziv obrazca" + +#: .\contrib\flatpages\models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Primjer: 'flatpages/contact_page.html'. Ako ovo ostavite praznim, sistem će " +"koristiti 'flatpages/default.html'." + +#: .\contrib\flatpages\models.py:13 +msgid "registration required" +msgstr "potrebna registracija" + +#: .\contrib\flatpages\models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Ako je ovo obilježeno, samo će prijavljeni korisnici moći da vide ovu " +"stranicu." + +#: .\contrib\flatpages\models.py:18 +msgid "flat page" +msgstr "flat stranica" + +#: .\contrib\flatpages\models.py:19 +msgid "flat pages" +msgstr "flat stranice" + +#: .\contrib\formtools\wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Žao nam je, ali Vaša sesija je istekla. Popunjavanje formulara nastavite na " +"ovoj stranici." + +#: .\contrib\gis\db\models\fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Osnovno GIS polje -- mapiran je za OpenGIS Specification Geometry tip polja." + +#: .\contrib\gis\db\models\fields.py:270 +msgid "Point" +msgstr "Tačka" + +#: .\contrib\gis\db\models\fields.py:274 +msgid "Line string" +msgstr "Linijska nit" + +#: .\contrib\gis\db\models\fields.py:278 +msgid "Polygon" +msgstr "Poligon" + +#: .\contrib\gis\db\models\fields.py:282 +msgid "Multi-point" +msgstr "Multi-point" + +#: .\contrib\gis\db\models\fields.py:286 +msgid "Multi-line string" +msgstr "Višelinijska nit" + +#: .\contrib\gis\db\models\fields.py:290 +msgid "Multi polygon" +msgstr "Multi poligon" + +#: .\contrib\gis\db\models\fields.py:294 +msgid "Geometry collection" +msgstr "Geometrijska kolekcija" + +#: .\contrib\gis\forms\fields.py:17 +msgid "No geometry value provided." +msgstr "Niste zadali parametre za geometriju." + +#: .\contrib\gis\forms\fields.py:18 +msgid "Invalid geometry value." +msgstr "Neispravan parametar za geometriju." + +#: .\contrib\gis\forms\fields.py:19 +msgid "Invalid geometry type." +msgstr "Nepostojeći tip geometrije." + +#: .\contrib\gis\forms\fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" +"Došlo je do greške tokom pretvaranje geometrije u SRID geometrijskom polja " +"obrazca." + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "th" +msgstr "-i" + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "st" +msgstr "-vi" + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "nd" +msgstr "-i" + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "rd" +msgstr "-i" + +#: .\contrib\humanize\templatetags\humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milion" +msgstr[1] "%(value).1f miliona" +msgstr[2] "%(value).1f miliona" + +#: .\contrib\humanize\templatetags\humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f milijarda" +msgstr[1] "%(value).1f milijarde" +msgstr[2] "%(value).1f milijardi" + +#: .\contrib\humanize\templatetags\humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f trilion" +msgstr[1] "%(value).1f triliona" +msgstr[2] "%(value).1f triliona" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "one" +msgstr "jedan" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "two" +msgstr "dva" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "three" +msgstr "tri" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "four" +msgstr "četiri" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "five" +msgstr "pet" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "six" +msgstr "šest" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "seven" +msgstr "sedam" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "eight" +msgstr "osam" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "nine" +msgstr "devet" + +#: .\contrib\humanize\templatetags\humanize.py:93 +msgid "today" +msgstr "deset" + +#: .\contrib\humanize\templatetags\humanize.py:95 +msgid "tomorrow" +msgstr "sutra" + +#: .\contrib\humanize\templatetags\humanize.py:97 +msgid "yesterday" +msgstr "jučer" + +#: .\contrib\localflavor\ar\forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Unesite poštanski broj u formatu NNNN ili ANNNNAAA." + +#: .\contrib\localflavor\ar\forms.py:50 .\contrib\localflavor\br\forms.py:97 +#: .\contrib\localflavor\br\forms.py:136 .\contrib\localflavor\pe\forms.py:24 +#: .\contrib\localflavor\pe\forms.py:52 +msgid "This field requires only numbers." +msgstr "Ovo polje mora sadržati samo brojke." + +#: .\contrib\localflavor\ar\forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "Ovo polje mora sadržati 7 ili 8 cifara" + +#: .\contrib\localflavor\ar\forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Unestie važeći CUIT u formatu XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: .\contrib\localflavor\ar\forms.py:81 +msgid "Invalid CUIT." +msgstr "Nevažeći CUIT" + +#: .\contrib\localflavor\at\at_states.py:5 +msgid "Burgenland" +msgstr "Burgenland" + +#: .\contrib\localflavor\at\at_states.py:6 +msgid "Carinthia" +msgstr "Karintija" + +#: .\contrib\localflavor\at\at_states.py:7 +msgid "Lower Austria" +msgstr "Donja Austrija" + +#: .\contrib\localflavor\at\at_states.py:8 +msgid "Upper Austria" +msgstr "Gornja Austrija" + +#: .\contrib\localflavor\at\at_states.py:9 +msgid "Salzburg" +msgstr "Salcburg" + +#: .\contrib\localflavor\at\at_states.py:10 +msgid "Styria" +msgstr "Stirija" + +#: .\contrib\localflavor\at\at_states.py:11 +msgid "Tyrol" +msgstr "Tirol" + +#: .\contrib\localflavor\at\at_states.py:12 +msgid "Vorarlberg" +msgstr "Voralber" + +#: .\contrib\localflavor\at\at_states.py:13 +msgid "Vienna" +msgstr "Beč" + +#: .\contrib\localflavor\at\forms.py:20 .\contrib\localflavor\ch\forms.py:17 +#: .\contrib\localflavor\no\forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "Unesite poštanski broj u formatu XXXX." + +#: .\contrib\localflavor\at\forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" +"Unesite važeći austrijski broj socijalnog osiguranja u formatu XXXX XXXXXX." + +#: .\contrib\localflavor\au\forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "Unesite četvorocifreni poštanski broj" + +#: .\contrib\localflavor\br\forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Unesite poštanski broj u formatu XXXXX-XXX." + +#: .\contrib\localflavor\br\forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Broj telefona mora biti u formatu XX-XXXX-XXXX." + +#: .\contrib\localflavor\br\forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "Odaberite postojeću brazilsku državu. Ta država nije među ponuđenima." + +#: .\contrib\localflavor\br\forms.py:95 +msgid "Invalid CPF number." +msgstr "Nevažeći CPF broj" + +#: .\contrib\localflavor\br\forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Polje zahtijeva najviše 11 cifri ili 14 znamenki." + +#: .\contrib\localflavor\br\forms.py:135 +msgid "Invalid CNPJ number." +msgstr "Neispravan CNPJ broj." + +#: .\contrib\localflavor\br\forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Polje zahtijeva najmanje 14 cifri" + +#: .\contrib\localflavor\ca\forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Unesite poštanski broj u formtu XXX XXX." + +#: .\contrib\localflavor\ca\forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "Unesite ispravan kanadski Social Insurance broj u XXX-XXX-XXX formatu." + +#: .\contrib\localflavor\ch\ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:10 +msgid "Berne" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:15 +msgid "Jura" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:26 +msgid "Uri" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:27 +msgid "Valais" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:29 +msgid "Zug" +msgstr "" + +#: .\contrib\localflavor\ch\ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: .\contrib\localflavor\ch\forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Unesite ispravan broj švicarske lične karte ili pasoša oblika X1234567<0 ili " +"u 1234567890 formatu." + +#: .\contrib\localflavor\cl\forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "Unesite ispravan čileanski RUT." + +#: .\contrib\localflavor\cl\forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Unesite ispravan čileanski RUT. Format je XX.XXX.XXX-X." + +#: .\contrib\localflavor\cl\forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "Čileanski RUT nije ispravan." + +#: .\contrib\localflavor\cz\cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:11 +msgid "Pilsen Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:13 +msgid "Usti Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:14 +msgid "Liberec Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:15 +msgid "Hradec Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:16 +msgid "Pardubice Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:17 +msgid "Vysocina Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:20 +msgid "Zlin Region" +msgstr "" + +#: .\contrib\localflavor\cz\cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: .\contrib\localflavor\cz\forms.py:28 .\contrib\localflavor\sk\forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Unesite poštanski broj u formatu XXXXX ili XX XX." + +#: .\contrib\localflavor\cz\forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Unesite datum rođenja u formatu XXXXXX/XXXX ili XXXXXXXXXX." + +#: .\contrib\localflavor\cz\forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Neispravan parametar Pol; ispravne vrijednosti su 'f' i 'm'" + +#: .\contrib\localflavor\cz\forms.py:50 +msgid "Enter a valid birth number." +msgstr "Unesite ispravan broj rođendana." + +#: .\contrib\localflavor\cz\forms.py:107 +msgid "Enter a valid IC number." +msgstr "Unsite ispravan IC broj." + +#: .\contrib\localflavor\de\de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:7 +msgid "Berlin" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:9 +msgid "Bremen" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:11 +msgid "Hessen" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:16 +msgid "Saarland" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:17 +msgid "Saxony" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: .\contrib\localflavor\de\de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: .\contrib\localflavor\de\forms.py:15 .\contrib\localflavor\fi\forms.py:13 +#: .\contrib\localflavor\fr\forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Unesite poštanski broj u formatu XXXXX." + +#: .\contrib\localflavor\de\forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Unesite ispravan broj njemačke identifikacijske kartice u XXXXXXXXXXX-" +"XXXXXXX-XXXXXXX-X formatu." + +#: .\contrib\localflavor\es\es_provinces.py:5 +msgid "Arava" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:30 +#: .\contrib\localflavor\es\es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:32 +#: .\contrib\localflavor\es\es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:43 +#: .\contrib\localflavor\es\es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: .\contrib\localflavor\es\es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:10 +msgid "Canary Islands" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:14 +msgid "Catalonia" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: .\contrib\localflavor\es\es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: .\contrib\localflavor\es\forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Unesite ispravan poštanski broj u nizu i formatu 01XXX - 52XXX." + +#: .\contrib\localflavor\es\forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Unesite ispravan telefonski broj u jednom od formata 6XXXXXXXX, 8XXXXXXXX " +"ili 9XXXXXXXX." + +#: .\contrib\localflavor\es\forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Unesite ispravan NIF, NIE ili CIF." + +#: .\contrib\localflavor\es\forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "Unesite ispravan NIF ili NIE." + +#: .\contrib\localflavor\es\forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "Neispravan checksum za NIF." + +#: .\contrib\localflavor\es\forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "Neispravan checksum za NIE." + +#: .\contrib\localflavor\es\forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "Neispravan checksum za CIF." + +#: .\contrib\localflavor\es\forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" +"Unesite isravan broj bankovnog računa u obliku XXXX-XXXX-XX-XXXXXXXXXX." + +#: .\contrib\localflavor\es\forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "Neispravan checksum za broj bankovnog računa." + +#: .\contrib\localflavor\fi\forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "Unesite ispravni finski identifikacijski broj." + +#: .\contrib\localflavor\fr\forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Broj telefona mora biti u formatu 0X XX XX XX XX." + +#: .\contrib\localflavor\id\forms.py:28 +msgid "Enter a valid post code" +msgstr "Unesite ispravni poštansku kod" + +#: .\contrib\localflavor\id\forms.py:68 .\contrib\localflavor\nl\forms.py:53 +msgid "Enter a valid phone number" +msgstr "Unesite ispravan telefonski broj" + +#: .\contrib\localflavor\id\forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Unesite ispravan broj automobilske tablice" + +#: .\contrib\localflavor\id\forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Unesite ispravan NIK/KTP broj" + +#: .\contrib\localflavor\id\id_choices.py:9 +#: .\contrib\localflavor\id\id_choices.py:73 +msgid "Bali" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:10 +#: .\contrib\localflavor\id\id_choices.py:45 +msgid "Banten" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:11 +#: .\contrib\localflavor\id\id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:12 +#: .\contrib\localflavor\id\id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:13 +#: .\contrib\localflavor\id\id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:14 +#: .\contrib\localflavor\id\id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:15 +#: .\contrib\localflavor\id\id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:19 +#: .\contrib\localflavor\id\id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:20 +#: .\contrib\localflavor\id\id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:21 +#: .\contrib\localflavor\id\id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:22 +#: .\contrib\localflavor\id\id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:24 +#: .\contrib\localflavor\id\id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:25 +#: .\contrib\localflavor\id\id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:26 +#: .\contrib\localflavor\id\id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:27 +#: .\contrib\localflavor\id\id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:28 +#: .\contrib\localflavor\id\id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:31 +msgid "Papua" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:33 +#: .\contrib\localflavor\id\id_choices.py:60 +msgid "Riau" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:34 +#: .\contrib\localflavor\id\id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:35 +#: .\contrib\localflavor\id\id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:36 +#: .\contrib\localflavor\id\id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:37 +#: .\contrib\localflavor\id\id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:39 +#: .\contrib\localflavor\id\id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:40 +#: .\contrib\localflavor\id\id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:41 +#: .\contrib\localflavor\id\id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:87 +msgid "Pati" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:92 +msgid "Madura" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:93 +msgid "Malang" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:94 +msgid "Jember" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: .\contrib\localflavor\id\id_choices.py:100 +msgid "Garut" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:16 +msgid "Down" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: .\contrib\localflavor\ie\ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: .\contrib\localflavor\in_\forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Unesite zip kod u formatu XXXXXXX." + +#: .\contrib\localflavor\is_\forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" +"Unesite ispravan islandski identifikacijski broj. Format je XXXXXX-XXXX." + +#: .\contrib\localflavor\is_\forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "Islanski identifikacijski broj nije ispravan." + +#: .\contrib\localflavor\it\forms.py:15 +msgid "Enter a valid zip code." +msgstr "Unesite ispravnu zip adresu." + +#: .\contrib\localflavor\it\forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "Unesite ispravan Social Security broj." + +#: .\contrib\localflavor\it\forms.py:69 +msgid "Enter a valid VAT number." +msgstr "Unesite ispravan VAT broj." + +#: .\contrib\localflavor\jp\forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Unesite poštanski broj u formatu XXXXXXX ili XXX-XXXX." + +#: .\contrib\localflavor\jp\jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: .\contrib\localflavor\jp\jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: .\contrib\localflavor\kw\forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Unesite ispravan kuvajtski Civil ID broj" + +#: .\contrib\localflavor\mx\mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:19 +msgid "Colima" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:21 +msgid "Durango" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: .\contrib\localflavor\mx\mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: .\contrib\localflavor\nl\forms.py:22 +msgid "Enter a valid postal code" +msgstr "Unesite ispravnu poštansku adresu" + +#: .\contrib\localflavor\nl\forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "Unesite ispravan SoFi broj" + +#: .\contrib\localflavor\nl\nl_provinces.py:4 +msgid "Drenthe" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: .\contrib\localflavor\nl\nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: .\contrib\localflavor\no\forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "Unesite ispravan norveški jedinstveni matični broj građana." + +#: .\contrib\localflavor\pe\forms.py:25 +msgid "This field requires 8 digits." +msgstr "Polje zahtijeva 8 cifri." + +#: .\contrib\localflavor\pe\forms.py:53 +msgid "This field requires 11 digits." +msgstr "Polje zahtijeva 11 cifri." + +#: .\contrib\localflavor\pl\forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "National Identification Number sastoji se od 11 cifri." + +#: .\contrib\localflavor\pl\forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "Pogrešan checksum za National Identification Number." + +#: .\contrib\localflavor\pl\forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Unesite poreski broj (NIP) u formatu XXX-XXX-XX-XX ili XX-XX-XXX-XXX." + +#: .\contrib\localflavor\pl\forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Pogrešan checksum za Tax Number (NIP)." + +#: .\contrib\localflavor\pl\forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "" +"National Business Register Number (REGON) sastoji se od 9 ili 14 cifri." + +#: .\contrib\localflavor\pl\forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "Pogrešan checksum za National Business Register Number (REGON)." + +#: .\contrib\localflavor\pl\forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Unesite ispravnu poštansku adresu u formatu XX-XXX." + +#: .\contrib\localflavor\pl\pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: .\contrib\localflavor\pt\forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Unesite zup kod u formatu XXXX-XXX" + +#: .\contrib\localflavor\pt\forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Telefonski brojevi moraju imati 9 cifri, ili početi sa + ili 00." + +#: .\contrib\localflavor\ro\forms.py:19 +msgid "Enter a valid CIF." +msgstr "Unesite ispravan CIF." + +#: .\contrib\localflavor\ro\forms.py:56 +msgid "Enter a valid CNP." +msgstr "Unesite ispravan CNP." + +#: .\contrib\localflavor\ro\forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "Unesite ispravan IBAN ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatu" + +#: .\contrib\localflavor\ro\forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "Telefonski brojevi moraju biti u XXXX-XXXXXX formatu." + +#: .\contrib\localflavor\ro\forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "Unesite ispravan poštanski broj u formatu XXXXXX" + +#: .\contrib\localflavor\se\forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Unesite ispravan švedski organizacijski broj." + +#: .\contrib\localflavor\se\forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Unesite ispravan švedski identifikacijski broj" + +#: .\contrib\localflavor\se\forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Koordinatni brojevi nisu dozvoljeni." + +#: .\contrib\localflavor\se\forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Unesite švedsku poštansku adresu u formatu XXXXX." + +#: .\contrib\localflavor\se\se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:27 +msgid "Halland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: .\contrib\localflavor\se\se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: .\contrib\localflavor\sk\sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: .\contrib\localflavor\sk\sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: .\contrib\localflavor\uk\forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:90 +msgid "England" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: .\contrib\localflavor\uk\uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: .\contrib\localflavor\us\forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Unesite poštansku adresu u formatu XXXXX ili XXXXX-XXXX" + +#: .\contrib\localflavor\us\forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Broj telefona mora biti u formatu XX-XXXX-XXXX." + +#: .\contrib\localflavor\us\forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Unesite ispravan američki Social Security broj u XXX-XX-XXXX formatu." + +#: .\contrib\localflavor\us\forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Unesite U.S. državu ili teritorij" + +#: .\contrib\localflavor\us\models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Država u SAD (dva velika slova)" + +#: .\contrib\localflavor\us\models.py:17 +msgid "Phone number" +msgstr "Broj telefona" + +#: .\contrib\localflavor\uy\forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Unestie važeći CUIT u formatu XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: .\contrib\localflavor\uy\forms.py:30 +msgid "Enter a valid CI number." +msgstr "Unsite ispravan IC broj." + +#: .\contrib\localflavor\za\forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "Unesite ispravan južnoafrički ID broj" + +#: .\contrib\localflavor\za\forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "Unesite ispravnu južnoafričku poštansku adresu" + +#: .\contrib\localflavor\za\za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:11 +msgid "North West" +msgstr "" + +#: .\contrib\localflavor\za\za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: .\contrib\messages\tests\base.py:101 +msgid "lazy message" +msgstr "lijena poruka" + +#: .\contrib\redirects\models.py:7 +msgid "redirect from" +msgstr "preusmjeren sa" + +#: .\contrib\redirects\models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Ovo mora biti apsolutna putanja bez imena domena. Na primjer: '/events/" +"search/'." + +#: .\contrib\redirects\models.py:9 +msgid "redirect to" +msgstr "preusmjeri ka" + +#: .\contrib\redirects\models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Ovo može biti ili apsolutna putanja (kao gore) ili pun URL koji počinje sa " +"'http://'." + +#: .\contrib\redirects\models.py:13 +msgid "redirect" +msgstr "preusmjeravanje" + +#: .\contrib\redirects\models.py:14 +msgid "redirects" +msgstr "preusmjeravanja" + +#: .\contrib\sessions\models.py:45 +msgid "session key" +msgstr "ključ sesije" + +#: .\contrib\sessions\models.py:47 +msgid "session data" +msgstr "podaci sesije" + +#: .\contrib\sessions\models.py:48 +msgid "expire date" +msgstr "datum isteka" + +#: .\contrib\sessions\models.py:53 +msgid "session" +msgstr "sesija" + +#: .\contrib\sessions\models.py:54 +msgid "sessions" +msgstr "sesije" + +#: .\contrib\sites\models.py:32 +msgid "domain name" +msgstr "ime domena" + +#: .\contrib\sites\models.py:33 +msgid "display name" +msgstr "prikazano ime" + +#: .\contrib\sites\models.py:39 +msgid "sites" +msgstr "sajtovi" + +#: .\core\validators.py:20 .\forms\fields.py:66 +msgid "Enter a valid value." +msgstr "Unesite ispravnu vrijednost." + +#: .\core\validators.py:87 .\forms\fields.py:529 +msgid "Enter a valid URL." +msgstr "Unesite ispravan URL." + +#: .\core\validators.py:89 .\forms\fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Ovaj URL izgleda ne vodi nikuda." + +#: .\core\validators.py:123 .\forms\fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Unesite ispravan „slug“, koji se sastoji od slova, brojki, donjih crta ili " +"crtica." + +#: .\core\validators.py:126 .\forms\fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Unesite ispravnu IPv4 adresu." + +#: .\core\validators.py:129 .\db\models\fields\__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Unesite samo brojke razdvojene zapetama." + +#: .\core\validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Pobrinite se da je ova vrijednost %(limit_value)s (trenutno je %(show_value)s)." + +#: .\core\validators.py:153 .\forms\fields.py:205 .\forms\fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Ova vrijednost mora da bude manja ili jednaka %(limit_value)s." + +#: .\core\validators.py:158 .\forms\fields.py:206 .\forms\fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Ova vrijednost mora biti veća ili jednaka %(limit_value)s." + +#: .\core\validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Pobrinite se da ova vrijednost ima najmanje %(limit_value)d znamenki (trenutno ima %" +"(show_value)d)." + +#: .\core\validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Pobrinite se da ova vrijednost ima najviše %(limit_value)d znamenki (ima %" +"(show_value)d)." + +#: .\db\models\base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s." + +#: .\db\models\base.py:837 .\db\models\base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s sa ovom vrijednošću %(field_label)s već postoji." + +#: .\db\models\fields\__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Vrijednost %r nije dozvoljen izbor." + +#: .\db\models\fields\__init__.py:64 +msgid "This field cannot be null." +msgstr "Ovo polje ne može ostati prazno." + +#: .\db\models\fields\__init__.py:65 +msgid "This field cannot be blank." +msgstr "Ovo polje ne može biti prazno." + +#: .\db\models\fields\__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Polje tipa: %(field_type)s" + +#: .\db\models\fields\__init__.py:451 .\db\models\fields\__init__.py:852 +#: .\db\models\fields\__init__.py:961 .\db\models\fields\__init__.py:972 +#: .\db\models\fields\__init__.py:999 +msgid "Integer" +msgstr "Cijeo broj" + +#: .\db\models\fields\__init__.py:455 .\db\models\fields\__init__.py:850 +msgid "This value must be an integer." +msgstr "Ova vrijednost mora biti cijelobrojna." + +#: .\db\models\fields\__init__.py:490 +msgid "This value must be either True or False." +msgstr "Ova vrijednost mora biti True ili False." + +#: .\db\models\fields\__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Bulova vrijednost (True ili False)" + +#: .\db\models\fields\__init__.py:539 .\db\models\fields\__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "String (najviše %(max_length)s znakova)" + +#: .\db\models\fields\__init__.py:567 +msgid "Comma-separated integers" +msgstr "Cijeli brojevi razdvojeni zapetama" + +#: .\db\models\fields\__init__.py:581 +msgid "Date (without time)" +msgstr "Datum (bez vremena)" + +#: .\db\models\fields\__init__.py:585 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Unesite ispravan datum u formatu GGGG-MM-DD." + +#: .\db\models\fields\__init__.py:586 +#, python-format +msgid "Invalid date: %s" +msgstr "Neispravan datum: %s" + +#: .\db\models\fields\__init__.py:667 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "" +"Unesite ispravan datum/vrijeme u formatu GGGG-MM-DD ČČ:MM[:ss[.uuuuuu]." + +#: .\db\models\fields\__init__.py:669 +msgid "Date (with time)" +msgstr "Datum (sa vremenom)" + +#: .\db\models\fields\__init__.py:735 +msgid "This value must be a decimal number." +msgstr "Ova vrijednost mora biti decimalni broj" + +#: .\db\models\fields\__init__.py:737 +msgid "Decimal number" +msgstr "Decimalni broj" + +#: .\db\models\fields\__init__.py:792 +msgid "E-mail address" +msgstr "Email adresa" + +#: .\db\models\fields\__init__.py:799 .\db\models\fields\files.py:220 +#: .\db\models\fields\files.py:331 +msgid "File path" +msgstr "Putanja fajla" + +#: .\db\models\fields\__init__.py:822 +msgid "This value must be a float." +msgstr "Ova vrijednost mora biti broj sa klizećom zapetom" + +#: .\db\models\fields\__init__.py:824 +msgid "Floating point number" +msgstr "Broj sa pokrenom zapetom" + +#: .\db\models\fields\__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Big (8 bajtni) integer" + +#: .\db\models\fields\__init__.py:912 +msgid "This value must be either None, True or False." +msgstr "Ova vrijednost mora biti ili None, ili True, ili False." + +#: .\db\models\fields\__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Bulova vrijednost (True, False ili None)" + +#: .\db\models\fields\__init__.py:1005 +msgid "Text" +msgstr "Tekst" + +#: .\db\models\fields\__init__.py:1021 +msgid "Time" +msgstr "Vrijeme" + +#: .\db\models\fields\__init__.py:1025 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Unesite ispravno vrijeme u formatu ČČ:MM[:ss[.uuuuuu]]." + +#: .\db\models\fields\__init__.py:1109 +msgid "XML text" +msgstr "XML tekst" + +#: .\db\models\fields\related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Model %(model)s sa pk %(pk)r ne postoji." + +#: .\db\models\fields\related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Strani ključ (tip određen povezanim poljem)" + +#: .\db\models\fields\related.py:918 +msgid "One-to-one relationship" +msgstr "Jedan-na-jedan odnos" + +#: .\db\models\fields\related.py:980 +msgid "Many-to-many relationship" +msgstr "Više-na-više odsnos" + +#: .\db\models\fields\related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Držite „Control“, ili „Command“ na Mac-u da biste obilježili više od jedne " +"stavke." + +#: .\db\models\fields\related.py:1061 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Unesite ispravan %(self)s IDs. Crijednost %(value)r je neispravna." +msgstr[1] "Unesite ispravan %(self)s IDs. Vrijednosti %(value)r su neispravne." +msgstr[2] "Unesite ispravan %(self)s IDs. Vrijednosti %(value)r su neispravne." + +#: .\forms\fields.py:65 +msgid "This field is required." +msgstr "Ovo polje se mora popuniti." + +#: .\forms\fields.py:204 +msgid "Enter a whole number." +msgstr "Unesite cijeo broj." + +#: .\forms\fields.py:235 .\forms\fields.py:256 +msgid "Enter a number." +msgstr "Unesite broj." + +#: .\forms\fields.py:259 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Ne smije biti ukupno više od %s cifara. Provjerite." + +#: .\forms\fields.py:260 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Ne smije biti ukupno više od %s decimalnih mijesta. Provjerite." + +#: .\forms\fields.py:261 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Ne smije biti ukupno više od %s cifara prije zapete. Provjerite." + +#: .\forms\fields.py:323 .\forms\fields.py:838 +msgid "Enter a valid date." +msgstr "Unesite ispravan datum." + +#: .\forms\fields.py:351 .\forms\fields.py:839 +msgid "Enter a valid time." +msgstr "Unesite ispravno vrijeme" + +#: .\forms\fields.py:377 +msgid "Enter a valid date/time." +msgstr "Unesite ispravan datum/vrijeme." + +#: .\forms\fields.py:435 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Fajl nije prebačen. Provjerite tip enkodiranja formulara." + +#: .\forms\fields.py:436 +msgid "No file was submitted." +msgstr "Fajl nije prebačen." + +#: .\forms\fields.py:437 +msgid "The submitted file is empty." +msgstr "Prebačen fajl je prazan." + +#: .\forms\fields.py:438 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Naziv fajla mora da sadrži bar %(max)d slovnih mijesta (trenutno ima %" +"(length)d)." + +#: .\forms\fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Prebacite ispravan fajl. Fajl koji je prebačen ili nije slika, ili je " +"oštećen." + +#: .\forms\fields.py:596 .\forms\fields.py:671 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"%(value)s nije među ponuđenim vrijednostima. Odaberite jednu od ponuđenih." + +#: .\forms\fields.py:672 .\forms\fields.py:734 .\forms\models.py:1007 +msgid "Enter a list of values." +msgstr "Unesite listu vrijednosti." + +#: .\forms\formsets.py:298 .\forms\formsets.py:300 +msgid "Order" +msgstr "Redoslijed" + +#: .\forms\models.py:567 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Ispravite dupli sadržaj za polja: %(field)s." + +#: .\forms\models.py:571 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" +"Ispravite dupli sadržaj za polja: %(field)s, koji mora da bude jedinstven." + +#: .\forms\models.py:577 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"Ispravite dupli sadržaj za polja: %(field_name)s, koji mora da bude " +"jedinstven za %(lookup)s u %(date_field)s." + +#: .\forms\models.py:585 +msgid "Please correct the duplicate values below." +msgstr "Ispravite duple vrijednosti dole." + +#: .\forms\models.py:860 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "Strani ključ se nije poklopio sa instancom roditeljskog ključa." + +#: .\forms\models.py:926 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Odabrana vrijednost nije među ponuđenima. Odaberite jednu od ponuđenih." + +#: .\forms\models.py:1008 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "%s nije među ponuđenim vrijednostima. Odaberite jednu od ponuđenih." + +#: .\forms\models.py:1010 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "„%s“ nije ispravna vrijednost za primarni ključ." + +#: .\template\defaultfilters.py:781 +msgid "yes,no,maybe" +msgstr "da,ne,možda" + +#: .\template\defaultfilters.py:812 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d bajt" +msgstr[1] "%(size)d bajta" +msgstr[2] "%(size)d bajtova" + +#: .\template\defaultfilters.py:814 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: .\template\defaultfilters.py:816 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: .\template\defaultfilters.py:817 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: .\utils\dateformat.py:42 +msgid "p.m." +msgstr "po p." + +#: .\utils\dateformat.py:43 +msgid "a.m." +msgstr "prije p." + +#: .\utils\dateformat.py:48 +msgid "PM" +msgstr "PM" + +#: .\utils\dateformat.py:49 +msgid "AM" +msgstr "AM" + +#: .\utils\dateformat.py:98 +msgid "midnight" +msgstr "ponoć" + +#: .\utils\dateformat.py:100 +msgid "noon" +msgstr "podne" + +#: .\utils\dates.py:6 +msgid "Monday" +msgstr "ponedjeljak" + +#: .\utils\dates.py:6 +msgid "Tuesday" +msgstr "utorak" + +#: .\utils\dates.py:6 +msgid "Wednesday" +msgstr "srijeda" + +#: .\utils\dates.py:6 +msgid "Thursday" +msgstr "četvrtak" + +#: .\utils\dates.py:6 +msgid "Friday" +msgstr "petak" + +#: .\utils\dates.py:7 +msgid "Saturday" +msgstr "subota" + +#: .\utils\dates.py:7 +msgid "Sunday" +msgstr "nedjelja" + +#: .\utils\dates.py:10 +msgid "Mon" +msgstr "pon." + +#: .\utils\dates.py:10 +msgid "Tue" +msgstr "uto." + +#: .\utils\dates.py:10 +msgid "Wed" +msgstr "sri." + +#: .\utils\dates.py:10 +msgid "Thu" +msgstr "čet." + +#: .\utils\dates.py:10 +msgid "Fri" +msgstr "pet." + +#: .\utils\dates.py:11 +msgid "Sat" +msgstr "sub." + +#: .\utils\dates.py:11 +msgid "Sun" +msgstr "ned." + +#: .\utils\dates.py:18 +msgid "January" +msgstr "januar" + +#: .\utils\dates.py:18 +msgid "February" +msgstr "februar" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "March" +msgstr "mart" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "April" +msgstr "april" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "May" +msgstr "maj" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "June" +msgstr "juni" + +#: .\utils\dates.py:19 .\utils\dates.py:31 +msgid "July" +msgstr "juli" + +#: .\utils\dates.py:19 +msgid "August" +msgstr "august" + +#: .\utils\dates.py:19 +msgid "September" +msgstr "septembar" + +#: .\utils\dates.py:19 +msgid "October" +msgstr "oktobar" + +#: .\utils\dates.py:19 +msgid "November" +msgstr "novembar" + +#: .\utils\dates.py:20 +msgid "December" +msgstr "decembar" + +#: .\utils\dates.py:23 +msgid "jan" +msgstr "jan." + +#: .\utils\dates.py:23 +msgid "feb" +msgstr "feb." + +#: .\utils\dates.py:23 +msgid "mar" +msgstr "mar." + +#: .\utils\dates.py:23 +msgid "apr" +msgstr "apr." + +#: .\utils\dates.py:23 +msgid "may" +msgstr "maj." + +#: .\utils\dates.py:23 +msgid "jun" +msgstr "jun." + +#: .\utils\dates.py:24 +msgid "jul" +msgstr "jul." + +#: .\utils\dates.py:24 +msgid "aug" +msgstr "aug." + +#: .\utils\dates.py:24 +msgid "sep" +msgstr "sep." + +#: .\utils\dates.py:24 +msgid "oct" +msgstr "okt." + +#: .\utils\dates.py:24 +msgid "nov" +msgstr "nov." + +#: .\utils\dates.py:24 +msgid "dec" +msgstr "dec." + +#: .\utils\dates.py:31 +msgid "Jan." +msgstr "jan." + +#: .\utils\dates.py:31 +msgid "Feb." +msgstr "feb." + +#: .\utils\dates.py:32 +msgid "Aug." +msgstr "aug." + +#: .\utils\dates.py:32 +msgid "Sept." +msgstr "sept." + +#: .\utils\dates.py:32 +msgid "Oct." +msgstr "okt." + +#: .\utils\dates.py:32 +msgid "Nov." +msgstr "nov." + +#: .\utils\dates.py:32 +msgid "Dec." +msgstr "dec." + +#: .\utils\text.py:130 +msgid "or" +msgstr "ili" + +#: .\utils\timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "godina" +msgstr[1] "godine" +msgstr[2] "godina" + +#: .\utils\timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "mjesec" +msgstr[1] "mjeseca" +msgstr[2] "mjeseci" + +#: .\utils\timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "nedelja" +msgstr[1] "nedelje" +msgstr[2] "nedelja" + +#: .\utils\timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "dan" +msgstr[1] "dana" +msgstr[2] "dana" + +#: .\utils\timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "sat" +msgstr[1] "sata" +msgstr[2] "sati" + +#: .\utils\timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minut" +msgstr[1] "minute" +msgstr[2] "minuta" + +#: .\utils\timesince.py:45 +msgid "minutes" +msgstr "minuta" + +#: .\utils\timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: .\utils\timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: .\utils\translation\trans_real.py:512 +msgid "DATE_FORMAT" +msgstr "j. N Y." + +#: .\utils\translation\trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. N. Y. G:i T" + +#: .\utils\translation\trans_real.py:514 +msgid "TIME_FORMAT" +msgstr "G:i" + +#: .\utils\translation\trans_real.py:535 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y." + +#: .\utils\translation\trans_real.py:536 +msgid "MONTH_DAY_FORMAT" +msgstr "j. F" + +#: .\views\generic\create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s je uspješno kreiran." + +#: .\views\generic\create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s je uspješno ažuriran." + +#: .\views\generic\create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s je obrisan." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Jedno ili više polja %(fieldname)s u %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Jedno ili više polja %(fieldname)s u %(name)s" + +#~ msgid "Old password:" +#~ msgstr "Stara lozinka:" + +#~ msgid "Relation to parent model" +#~ msgstr "Veza sa roditeljskim modelom" + +#~ msgid "Add user" +#~ msgstr "Dodaj korisnika" + +#~ msgid "Comment moderation queue" +#~ msgstr "Komentari koji čekaju na odobrenje" + +#~ msgid "No comments to moderate" +#~ msgstr "Nema komentara na čekanju" + +#~ msgid "Email" +#~ msgstr "Imejl adresa" + +#~ msgid "Authenticated?" +#~ msgstr "Prijavljen?" + +#~ msgid "IP Address" +#~ msgstr "IP adresa" + +#~ msgid "Date posted" +#~ msgstr "Datum postavljanja" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "no" +#~ msgstr "ne" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ca/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/ca/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ca/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/ca/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/ca/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-07 15:04+0200\n" +"POT-Creation-Date: 2009-11-30 11:19+0100\n" "PO-Revision-Date: 2009-03-24 13:28+0100\n" "Last-Translator: Django Catalan Group \n" "Language-Team: Catalan \n" @@ -223,7 +223,7 @@ msgid "Successfully deleted %(count)d %(items)s." msgstr "Eliminat/s %(count)d %(items)s satisfactòriament." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1025 +#: contrib/admin/actions.py:67 contrib/admin/options.py:1033 msgid "Are you sure?" msgstr "Esteu segurs?" @@ -266,15 +266,15 @@ msgid "This year" msgstr "Aquest any" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 msgid "Yes" msgstr "Si" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:435 msgid "Unknown" msgstr "Desconegut" @@ -310,61 +310,61 @@ msgid "log entries" msgstr "entrades del registre" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:134 contrib/admin/options.py:148 msgid "None" msgstr "cap" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:521 #, python-format msgid "Changed %s." msgstr "Modificat %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:521 contrib/admin/options.py:531 +#: contrib/comments/templates/comments/preview.html:16 forms/models.py:384 +#: forms/models.py:596 msgid "and" msgstr "i" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:526 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Afegit %(name)s \"%(object)s\"" -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:530 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Modificat %(list)s per a %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:535 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Eliminat %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:539 msgid "No fields changed." msgstr "Cap camp canviat." -#: contrib/admin/options.py:598 contrib/auth/admin.py:67 +#: contrib/admin/options.py:601 contrib/auth/admin.py:67 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "El/la %(name)s \"%(obj)s\".ha estat afegit/da amb èxit." -#: contrib/admin/options.py:602 contrib/admin/options.py:635 +#: contrib/admin/options.py:605 contrib/admin/options.py:638 #: contrib/auth/admin.py:75 msgid "You may edit it again below." msgstr "Podeu editar-lo de nou a baix." -#: contrib/admin/options.py:612 contrib/admin/options.py:645 +#: contrib/admin/options.py:615 contrib/admin/options.py:648 #, python-format msgid "You may add another %s below." msgstr "Podeu afegir un altre %s a baix." -#: contrib/admin/options.py:633 +#: contrib/admin/options.py:636 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "S'ha modificat amb èxit el/la %(name)s \"%(obj)s." -#: contrib/admin/options.py:641 +#: contrib/admin/options.py:644 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -372,43 +372,43 @@ "S'ha afegit exitosament el/la %(name)s \"%(obj)s\". Pot editar-lo de nou " "abaix." -#: contrib/admin/options.py:772 +#: contrib/admin/options.py:777 #, python-format msgid "Add %s" msgstr "Afegir %s" -#: contrib/admin/options.py:803 contrib/admin/options.py:1003 +#: contrib/admin/options.py:809 contrib/admin/options.py:1011 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "No existèix cap objecte %(name)s amb la clau primària %(key)r." -#: contrib/admin/options.py:860 +#: contrib/admin/options.py:866 #, python-format msgid "Change %s" msgstr "Modificar %s" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:910 msgid "Database error" msgstr "Error de base de dades" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:946 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s s'ha modificat amb èxit." msgstr[1] "%(count)s %(name)s s'han modificat amb èxit." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1026 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "El/la %(name)s \"%(obj)s\" ha estat eliminat amb èxit." -#: contrib/admin/options.py:1054 +#: contrib/admin/options.py:1063 #, python-format msgid "Change history: %s" msgstr "Modificar històric: %s" -#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 #: contrib/auth/forms.py:80 msgid "" "Please enter a correct username and password. Note that both fields are case-" @@ -417,11 +417,11 @@ "Si us plau, introduïu un nom d'usuari i contrasenya vàlids. Tingueu en " "compte que tots dos camps son sensibles a majúscules i minúscules." -#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Si us plau, identifiqueu-vos de nou doncs la vostra sessió ha expirat." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:299 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -430,29 +430,29 @@ "'cookies' (galetes). Si us plau, habiliteu les 'cookies', recarregueu " "aquesta pàgina i proveu-ho de nou. " -#: contrib/admin/sites.py:301 contrib/admin/sites.py:307 +#: contrib/admin/sites.py:315 contrib/admin/sites.py:321 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Els noms d'usuari no poden contenir el caracter '@'." -#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "La vostra adreça de correu no és el vostre nom d'usuari. Provi '%s' en tot " "cas." -#: contrib/admin/sites.py:360 +#: contrib/admin/sites.py:374 msgid "Site administration" msgstr "Lloc administratiu" -#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:388 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Iniciar sessió" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:433 #, python-format msgid "%s administration" msgstr "Administració de %s" @@ -467,27 +467,27 @@ msgid "One or more %(fieldname)s in %(name)s:" msgstr "Un o més %(fieldname)s en %(name)s:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:72 msgid "Date:" msgstr "Data:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:72 msgid "Time:" msgstr "Hora:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:96 msgid "Currently:" msgstr "Actualment:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:96 msgid "Change:" msgstr "Modificar:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:125 msgid "Lookup" msgstr "Cercar" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:237 msgid "Add Another" msgstr "Afegir un altre" @@ -502,7 +502,7 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 +#: contrib/admin/templates/admin/base.html:54 #: contrib/admin/templates/admin/change_form.html:17 #: contrib/admin/templates/admin/change_list.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:6 @@ -555,18 +555,18 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Benvingut/da," -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentació" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:40 #: contrib/admin/templates/admin/auth/user/change_password.html:14 #: contrib/admin/templates/admin/auth/user/change_password.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 @@ -574,7 +574,7 @@ msgid "Change password" msgstr "Canviar contrasenya" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 msgid "Log out" @@ -600,7 +600,7 @@ #: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Veure al lloc" @@ -670,9 +670,9 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" -"Esteu segurs de voler esborrar els/les %(object_name)s seleccionats?Tots " +"Esteu segurs de voler esborrar els/les %(object_name)s seleccionats? Tots " "aquests objectes i els seus elements relacionats s'esborraran:" #: contrib/admin/templates/admin/filter.html:2 @@ -736,7 +736,6 @@ msgstr "Usuari" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Acció" @@ -985,7 +984,7 @@ msgid "Reset my password" msgstr "Restablir la meva contrasenya" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:304 msgid "All dates" msgstr "Totes les dates" @@ -1007,145 +1006,144 @@ msgid "template" msgstr "plantilla" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "etiqueta:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filtre:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "vista:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "No s'ha pogut trobar l'aplicació %r" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "El model %(model_name)r no s'ha trobat en l'aplicació %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "l'objecte relacionat `%(app_label)s.%(data_type)s`" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:225 -#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:244 -#: contrib/admindocs/views.py:258 contrib/admindocs/views.py:263 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" -#: contrib/admindocs/views.py:221 contrib/admindocs/views.py:253 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "objectes relacionats `%(app_label)s.%(object_name)s`" -#: contrib/admindocs/views.py:225 contrib/admindocs/views.py:258 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "tots %s" -#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:263 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "nombre de %s" -#: contrib/admindocs/views.py:268 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Camps en objectes %s" -#: contrib/admindocs/views.py:331 contrib/admindocs/views.py:342 -#: contrib/admindocs/views.py:344 contrib/admindocs/views.py:350 -#: contrib/admindocs/views.py:351 contrib/admindocs/views.py:353 +#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 +#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 +#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 msgid "Integer" msgstr "Enter" -#: contrib/admindocs/views.py:332 +#: contrib/admindocs/views.py:335 msgid "Boolean (Either True or False)" msgstr "Booleà (Verdader o Fals)" -#: contrib/admindocs/views.py:333 contrib/admindocs/views.py:352 +#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 #, python-format msgid "String (up to %(max_length)s)" msgstr "Cadena (de fins a %(max_length)s)" -#: contrib/admindocs/views.py:334 +#: contrib/admindocs/views.py:337 msgid "Comma-separated integers" msgstr "Enters separats per comes" -#: contrib/admindocs/views.py:335 +#: contrib/admindocs/views.py:338 msgid "Date (without time)" msgstr "Data (sense hora)" -#: contrib/admindocs/views.py:336 +#: contrib/admindocs/views.py:339 msgid "Date (with time)" msgstr "Data (amb hora)" -#: contrib/admindocs/views.py:337 +#: contrib/admindocs/views.py:340 msgid "Decimal number" msgstr "Número decimal" -#: contrib/admindocs/views.py:338 +#: contrib/admindocs/views.py:341 msgid "E-mail address" msgstr "Adreça de correu electrònic" -#: contrib/admindocs/views.py:339 contrib/admindocs/views.py:340 -#: contrib/admindocs/views.py:343 +#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 +#: contrib/admindocs/views.py:346 msgid "File path" msgstr "Ruta del fitxer" -#: contrib/admindocs/views.py:341 +#: contrib/admindocs/views.py:344 msgid "Floating point number" msgstr "Número amb punt de coma flotant" -#: contrib/admindocs/views.py:345 contrib/comments/models.py:60 +#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 msgid "IP address" msgstr "Adreça IP" -#: contrib/admindocs/views.py:347 +#: contrib/admindocs/views.py:350 msgid "Boolean (Either True, False or None)" msgstr "Booleà (Verdader, Fals o 'None' (cap))" -#: contrib/admindocs/views.py:348 +#: contrib/admindocs/views.py:351 msgid "Relation to parent model" msgstr "Relació amb el model pare" -#: contrib/admindocs/views.py:349 +#: contrib/admindocs/views.py:352 msgid "Phone number" msgstr "Número de telèfon" -#: contrib/admindocs/views.py:354 +#: contrib/admindocs/views.py:357 msgid "Text" msgstr "Text" -#: contrib/admindocs/views.py:355 +#: contrib/admindocs/views.py:358 msgid "Time" msgstr "Hora" -#: contrib/admindocs/views.py:356 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 +#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 #: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admindocs/views.py:357 +#: contrib/admindocs/views.py:360 msgid "U.S. state (two uppercase letters)" msgstr "Estat dels E.U.A. (dues lletres majúscules)" -#: contrib/admindocs/views.py:358 +#: contrib/admindocs/views.py:361 msgid "XML text" msgstr "Text XML" -#: contrib/admindocs/views.py:384 +#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s no sembla ser un objecte 'urlpattern'" @@ -1438,22 +1436,54 @@ msgid "message" msgstr "missatge" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:60 msgid "Logged out" msgstr "Sessió finalitzada" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Introduïu una adreça de correu vàlida." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "contingut" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "metadades" +# Context problem... waitting for comments from django-i18n +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "marcat" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "Marcar els comentaris seleccionats" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "aprovat" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "Aprovar els comentaris seleccionats" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "eliminat" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "Eliminar els comentaris seleccionats" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 comentari ha estat %(action)s satisfactòriament." +msgstr[1] "%(count)s comentaris han estat %(action)s satisfactòriament." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1465,7 +1495,6 @@ msgstr "Últims comentaris a %(site_name)s." #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "nom" @@ -1474,7 +1503,6 @@ msgstr "Adreça de correu electrònic" #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Comentari" @@ -1606,7 +1634,6 @@ msgstr "Realment vol fer aquest comentari públic?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Aprovar" @@ -1631,7 +1658,6 @@ msgstr "Realment vol eliminar aquest comentari?" #: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 msgid "Remove" msgstr "Eliminar" @@ -1666,39 +1692,6 @@ msgid "Preview" msgstr "Vista prèvia" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Cua de moderació de comentaris" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "No hi ha comentaris per a moderar" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Correu electrònic" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Autentificat?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Adreça IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Data d'enviament" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "si" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "no" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Gràcies per comentar" @@ -1793,7 +1786,7 @@ msgid "flat pages" msgstr "pàgines estàtiques" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:132 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -2615,6 +2608,10 @@ msgid "Enter a valid Finnish social security number." msgstr "Introduïu un número vàlid de la seguretat social finlandesa." +#: contrib/localflavor/fr/forms.py:30 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Els números de telèfon han de estar en el format 0X XX XX XX XX." + #: contrib/localflavor/in_/forms.py:14 msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduïu un codi zip en el format XXXXXXX." @@ -3053,7 +3050,8 @@ #: contrib/localflavor/pl/forms.py:109 msgid "National Business Register Number (REGON) consists of 9 or 14 digits." msgstr "" -"El número nacional de registre de negocis (REGON) consisteix en 9 o 14 dígits." +"El número nacional de registre de negocis (REGON) consisteix en 9 o 14 " +"dígits." #: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -3943,14 +3941,14 @@ msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Introduïu una hora vàlida en el format HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/related.py:869 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Premeu la tecla \"Control\" -o \"Command\" en un Mac- per seleccionar més " "d'un valor." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:930 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3962,95 +3960,95 @@ "Si us plau, introduïu IDs de %(self)s vàlids. Els valors %(value)r són " "invàlids." -#: forms/fields.py:54 +#: forms/fields.py:53 msgid "This field is required." msgstr "Aquest camp és obligatori." -#: forms/fields.py:55 +#: forms/fields.py:54 msgid "Enter a valid value." msgstr "Introduïu un valor vàlid." -#: forms/fields.py:138 +#: forms/fields.py:137 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." msgstr "" "Assegureu-vos de que el valor té com a màxim %(max)d caràcters (en té %" "(length)d)." -#: forms/fields.py:139 +#: forms/fields.py:138 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "" "Assegureu-vos de que el valor té com a mínim %(min)d caràcters (en té %" "(length)d)." -#: forms/fields.py:166 +#: forms/fields.py:165 msgid "Enter a whole number." msgstr "Introduïu un número sencer." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 +#: forms/fields.py:166 forms/fields.py:195 forms/fields.py:224 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Aquest valor ha de ser menor o igual a %s." -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 +#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Assegureu-vos de que aquest valor sigui superior o igual a %s." -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:194 forms/fields.py:223 msgid "Enter a number." msgstr "Introduïu un número." -#: forms/fields.py:227 +#: forms/fields.py:226 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Assegureu-vos de que no hi ha més de %s dígits en total." -#: forms/fields.py:228 +#: forms/fields.py:227 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Assegureu-vos de que no hi ha més de %s decimals." -#: forms/fields.py:229 +#: forms/fields.py:228 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Assegureu-vos de que no hi ha més de %s dígits decimals." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:287 forms/fields.py:862 msgid "Enter a valid date." msgstr "Introduïu una data vàlida." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:321 forms/fields.py:863 msgid "Enter a valid time." msgstr "Introduïu una hora vàlida." -#: forms/fields.py:361 +#: forms/fields.py:360 msgid "Enter a valid date/time." msgstr "Introduïu una data/hora vàlides." -#: forms/fields.py:447 +#: forms/fields.py:446 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari." -#: forms/fields.py:448 +#: forms/fields.py:447 msgid "No file was submitted." msgstr "No s'ha enviat cap fitxer." +#: forms/fields.py:448 +msgid "The submitted file is empty." +msgstr "El fitxer enviat està buit." + #: forms/fields.py:449 -msgid "The submitted file is empty." -msgstr "El fitxer enviat està buit." - -#: forms/fields.py:450 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "" -"Assegureu-vos de que el valor té com a màxim %(max)d caràcters " -"(en té %(length)d)." - -#: forms/fields.py:483 +"Assegureu-vos de que el valor té com a màxim %(max)d caràcters (en té %" +"(length)d)." + +#: forms/fields.py:482 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4058,28 +4056,28 @@ "Envieu una imatge vàlida. El fitxer que heu enviat no era una imatge o " "estava corrupte." -#: forms/fields.py:544 +#: forms/fields.py:543 msgid "Enter a valid URL." msgstr "Introduïu una URL vàlida." -#: forms/fields.py:545 +#: forms/fields.py:544 msgid "This URL appears to be a broken link." msgstr "Aquesta URL sembla ser un enllaç trencat." -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:624 forms/fields.py:702 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Esculliu una opció vàlida. %(value)s no és una de les opcions vàlides." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:703 forms/fields.py:764 forms/models.py:999 msgid "Enter a list of values." msgstr "Introduïu una llista de valors." -#: forms/fields.py:892 +#: forms/fields.py:891 msgid "Enter a valid IPv4 address." msgstr "Introduïu una adreça IPv4 vàlida." -#: forms/fields.py:902 +#: forms/fields.py:901 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" @@ -4090,56 +4088,58 @@ msgid "Order" msgstr "Ordre" -#: forms/models.py:367 +#: forms/models.py:363 #, python-format msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." msgstr "El camp %(field_name)s ha de ser únic per a %(lookup)s %(date_field)s." -#: forms/models.py:381 forms/models.py:389 +#: forms/models.py:377 forms/models.py:385 #, python-format msgid "%(model_name)s with this %(field_label)s already exists." msgstr "Ja existeix %(model_name)s amb aquest %(field_label)s." -#: forms/models.py:594 +#: forms/models.py:590 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Si us plau, corregiu la dada duplicada per a %(field)s." -#: forms/models.py:598 +#: forms/models.py:594 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "Si us plau, corregiu la dada duplicada per a %(field)s, la qual ha de ser única." - -#: forms/models.py:604 +msgstr "" +"Si us plau, corregiu la dada duplicada per a %(field)s, la qual ha de ser " +"única." + +#: forms/models.py:600 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -"Si us plau, corregiu la dada duplicada per a %(field_name)s, " -"la qual ha de ser única per a la cerca %(lookup)s en %(date_field)s." - -#: forms/models.py:612 +"Si us plau, corregiu la dada duplicada per a %(field_name)s, la qual ha de " +"ser única per a la cerca %(lookup)s en %(date_field)s." + +#: forms/models.py:608 msgid "Please correct the duplicate values below." msgstr "Si us plau, corregiu els valors duplicats a baix." -#: forms/models.py:867 +#: forms/models.py:863 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "La clau forànea en línea no coincideix amb la clau primària de la instància " "del pare" -#: forms/models.py:930 +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" "Escolli una opció vàlida; Aquesta opció no és una de les opcions disponibles." -#: forms/models.py:1004 +#: forms/models.py:1000 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Escolliu una opció vàlida; %s' no és una de les opcions vàlides." -#: forms/models.py:1006 +#: forms/models.py:1002 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" no és un valor vàlid per a una clau primària." @@ -4459,6 +4459,30 @@ msgid "The %(verbose_name)s was deleted." msgstr "El %(verbose_name)s s'ha eliminat." +#~ msgid "Comment moderation queue" +#~ msgstr "Cua de moderació de comentaris" + +#~ msgid "No comments to moderate" +#~ msgstr "No hi ha comentaris per a moderar" + +#~ msgid "Email" +#~ msgstr "Correu electrònic" + +#~ msgid "Authenticated?" +#~ msgstr "Autentificat?" + +#~ msgid "IP Address" +#~ msgstr "Adreça IP" + +#~ msgid "Date posted" +#~ msgstr "Data d'enviament" + +#~ msgid "yes" +#~ msgstr "si" + +#~ msgid "no" +#~ msgstr "no" + #, fuzzy #~ msgid "verbose_name" #~ msgid_plural "verbose_name_plural" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ca/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ca/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ca/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,30 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'j \de F \de Y' +TIME_FORMAT = 'G:i:s' +DATETIME_FORMAT = r'j \de F \de Y \a \le\s G:i' +YEAR_MONTH_FORMAT = r'F \de\l Y' +MONTH_DAY_FORMAT = r'j \de F' +SHORT_DATE_FORMAT = 'd/m/Y' +SHORT_DATETIME_FORMAT = 'd/m/Y G:i' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + # '31/12/2009', '31/12/09' + '%d/%m/%Y', '%d/%m/%y' +) +TIME_INPUT_FORMATS = ( + # '14:30:59', '14:30' + '%H:%M:%S', '%H:%M' +) +DATETIME_INPUT_FORMATS = ( + '%d/%m/%Y %H:%M:%S', + '%d/%m/%Y %H:%M', + '%d/%m/%y %H:%M:%S', + '%d/%m/%y %H:%M', +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cs/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/cs/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cs/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/cs/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/cs/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -2,15 +2,15 @@ # This file is distributed under the same license as the DJANGO package. # Radek Svarz , 2005, # Tomáš Ehrlich , 2009, -# Vláďa Macek , 2009. +# Vlada Macek , 2010. # msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-15 14:17+0200\n" -"PO-Revision-Date: 2009-05-15 14:19+0200\n" -"Last-Translator: Vláďa Macek \n" +"POT-Creation-Date: 2010-04-07 13:17+0200\n" +"PO-Revision-Date: 2010-04-07 13:47+0100\n" +"Last-Translator: Vlada Macek \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,218 +22,239 @@ msgstr "arabsky" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "bulharsky" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "bengálsky" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "bulharsky" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "katalánsky" +msgid "Bosnian" +msgstr "bosensky" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "katalánsky" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "česky" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "welšsky" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "dánsky" +msgid "Welsh" +msgstr "welšsky" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "dánsky" + +#: conf/global_settings.py:52 msgid "German" msgstr "německy" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "řecky" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "anglicky" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "španělsky" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "estonsky" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "argentinskou španělštinou" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "estonsky" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "baskicky" -#: conf/global_settings.py:58 -msgid "Persian" -msgstr "persky" - #: conf/global_settings.py:59 -msgid "Finnish" -msgstr "finsky" +msgid "Persian" +msgstr "persky" #: conf/global_settings.py:60 +msgid "Finnish" +msgstr "finsky" + +#: conf/global_settings.py:61 msgid "French" msgstr "francouzsky" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 +msgid "Frisian" +msgstr "frísky" + +#: conf/global_settings.py:63 msgid "Irish" msgstr "irsky" -#: conf/global_settings.py:62 +#: conf/global_settings.py:64 msgid "Galician" msgstr "galicijsky" -#: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "maďarsky" - -#: conf/global_settings.py:64 +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "hebrejsky" -#: conf/global_settings.py:65 +#: conf/global_settings.py:66 msgid "Hindi" msgstr "hindsky" -#: conf/global_settings.py:66 -msgid "Croatian" -msgstr "chorvatsky" - #: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "islandsky" +msgid "Croatian" +msgstr "chorvatsky" #: conf/global_settings.py:68 -msgid "Italian" -msgstr "italsky" +msgid "Hungarian" +msgstr "maďarsky" #: conf/global_settings.py:69 -msgid "Japanese" -msgstr "japonsky" +msgid "Icelandic" +msgstr "islandsky" #: conf/global_settings.py:70 -msgid "Georgian" -msgstr "gruzínsky" +msgid "Italian" +msgstr "italsky" #: conf/global_settings.py:71 -msgid "Korean" -msgstr "korejsky" +msgid "Japanese" +msgstr "japonsky" #: conf/global_settings.py:72 -msgid "Khmer" -msgstr "khmersky" +msgid "Georgian" +msgstr "gruzínsky" #: conf/global_settings.py:73 +msgid "Khmer" +msgstr "khmersky" + +#: conf/global_settings.py:74 msgid "Kannada" msgstr "kannadsky" -#: conf/global_settings.py:74 +#: conf/global_settings.py:75 +msgid "Korean" +msgstr "korejsky" + +#: conf/global_settings.py:76 +msgid "Lithuanian" +msgstr "litevsky" + +#: conf/global_settings.py:77 msgid "Latvian" msgstr "lotyšsky" -#: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "litevsky" - -#: conf/global_settings.py:76 +#: conf/global_settings.py:78 msgid "Macedonian" msgstr "makedonsky" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Dutch" msgstr "holandsky" -#: conf/global_settings.py:78 +#: conf/global_settings.py:80 msgid "Norwegian" msgstr "norsky" -#: conf/global_settings.py:79 +#: conf/global_settings.py:81 msgid "Polish" msgstr "polsky" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "portugalsky" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "brazilskou portugalštinou" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "rumunsky" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "rusky" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "slovensky" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "slovinsky" -#: conf/global_settings.py:86 -msgid "Serbian" -msgstr "srbsky" - -#: conf/global_settings.py:87 -msgid "Swedish" -msgstr "švédsky" - #: conf/global_settings.py:88 -msgid "Tamil" -msgstr "tamilsky" +msgid "Albanian" +msgstr "albánsky" #: conf/global_settings.py:89 -msgid "Telugu" -msgstr "telužsky" +msgid "Serbian" +msgstr "srbsky" #: conf/global_settings.py:90 -msgid "Thai" -msgstr "thajsky" +msgid "Serbian Latin" +msgstr "srbskou latinou" #: conf/global_settings.py:91 -msgid "Turkish" -msgstr "turecky" +msgid "Swedish" +msgstr "švédsky" #: conf/global_settings.py:92 -msgid "Ukrainian" -msgstr "ukrajinsky" +msgid "Tamil" +msgstr "tamilsky" #: conf/global_settings.py:93 -msgid "Simplified Chinese" -msgstr "zjednodušenou čínštinou" +msgid "Telugu" +msgstr "telužsky" #: conf/global_settings.py:94 +msgid "Thai" +msgstr "thajsky" + +#: conf/global_settings.py:95 +msgid "Turkish" +msgstr "turecky" + +#: conf/global_settings.py:96 +msgid "Ukrainian" +msgstr "ukrajinsky" + +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "vietnamsky" + +#: conf/global_settings.py:98 +msgid "Simplified Chinese" +msgstr "zjednodušenou čínštinou" + +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "tradiční čínštinou" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." -msgstr "Úspěšně smazané: %(count)d %(items)s." - -#: contrib/admin/actions.py:67 contrib/admin/options.py:1025 +msgstr "Úspěšně odstraněno: %(count)d %(items)s." + +#: contrib/admin/actions.py:59 +#: contrib/admin/options.py:1098 msgid "Are you sure?" msgstr "Jste si jisti?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" -msgstr "Smazat vybrané %(verbose_name_plural)s" +msgstr "Odstranit vybrané %(verbose_name_plural)s" #: contrib/admin/filterspecs.py:44 #, python-format @@ -244,8 +265,10 @@ "

        %s:

        \n" "
          \n" -#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 -#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +#: contrib/admin/filterspecs.py:75 +#: contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 +#: contrib/admin/filterspecs.py:173 msgid "All" msgstr "Vše" @@ -269,37 +292,40 @@ msgid "This year" msgstr "Tento rok" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 +#: forms/widgets.py:469 msgid "Yes" msgstr "Ano" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 +#: forms/widgets.py:469 msgid "No" msgstr "Ne" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 +#: forms/widgets.py:469 msgid "Unknown" msgstr "Neznámé" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:19 msgid "Action:" -msgstr "Akce:" +msgstr "Operace:" #: contrib/admin/models.py:19 msgid "action time" -msgstr "čas akce" +msgstr "čas operace" #: contrib/admin/models.py:22 msgid "object id" -msgstr "id objektu" +msgstr "id položky" #: contrib/admin/models.py:23 msgid "object repr" -msgstr "reprez. objektu" +msgstr "reprez. položky" #: contrib/admin/models.py:24 msgid "action flag" -msgstr "příznak akce" +msgstr "příznak operace" #: contrib/admin/models.py:25 msgid "change message" @@ -313,88 +339,98 @@ msgid "log entries" msgstr "položky protokolu" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:140 +#: contrib/admin/options.py:155 msgid "None" msgstr "Žádný" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:559 #, python-format msgid "Changed %s." -msgstr "Záznam %s změněn." - -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:587 +msgstr "Změněno: %s" + +#: contrib/admin/options.py:559 +#: contrib/admin/options.py:569 +#: contrib/comments/templates/comments/preview.html:16 +#: db/models/base.py:840 +#: forms/models.py:562 msgid "and" msgstr "a" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:564 #, python-format msgid "Added %(name)s \"%(object)s\"." -msgstr "Přidán záznam \"%(object)s\" typu \"%(name)s\"." - -#: contrib/admin/options.py:528 +msgstr "Položka \"%(object)s\" typu %(name)s byla přidána." + +#: contrib/admin/options.py:568 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." -msgstr "Změněn \"%(list)s\" pro záznam \"%(object)s\" typu \"%(name)s\"." - -#: contrib/admin/options.py:533 +msgstr "Pole \"%(list)s\" pro položku \"%(object)s\" typu %(name)s změněno/změněna." + +#: contrib/admin/options.py:573 #, python-format msgid "Deleted %(name)s \"%(object)s\"." -msgstr "Smazán záznam \"%(object)s\" typu \"%(name)s\"." - -#: contrib/admin/options.py:537 +msgstr "Položka \"%(object)s\" typu %(name)s byla odstraněna." + +#: contrib/admin/options.py:577 msgid "No fields changed." msgstr "Nebyla změněna žádná pole." -#: contrib/admin/options.py:598 contrib/auth/admin.py:67 +#: contrib/admin/options.py:643 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně přidán." - -#: contrib/admin/options.py:602 contrib/admin/options.py:635 -#: contrib/auth/admin.py:75 +msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně přidána." + +#: contrib/admin/options.py:647 +#: contrib/admin/options.py:680 msgid "You may edit it again below." msgstr "V úpravách můžete pokračovat níže." -#: contrib/admin/options.py:612 contrib/admin/options.py:645 +#: contrib/admin/options.py:657 +#: contrib/admin/options.py:690 #, python-format msgid "You may add another %s below." -msgstr "Další záznam typu \"%s\" můžete přidat níže." - -#: contrib/admin/options.py:633 +msgstr "Níže můžete přidat další položku typu %s." + +#: contrib/admin/options.py:678 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně změněn." - -#: contrib/admin/options.py:641 +msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně změněna." + +#: contrib/admin/options.py:686 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně přidán. Níže můžete v " -"úpravách pokračovat." - -#: contrib/admin/options.py:772 +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně přidána. Níže můžete v úpravách pokračovat." + +#: contrib/admin/options.py:740 +msgid "Items must be selected in order to perform actions on them. No items have been changed." +msgstr "K provedení hromadných operací je třeba vybrat nějaké položky. Nedošlo k žádným změnám." + +#: contrib/admin/options.py:758 +msgid "No action selected." +msgstr "Nebyla vybrána žádná operace." + +#: contrib/admin/options.py:838 #, python-format msgid "Add %s" msgstr "%s: přidat" -#: contrib/admin/options.py:803 contrib/admin/options.py:1003 +#: contrib/admin/options.py:864 +#: contrib/admin/options.py:1078 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." -msgstr "Objekt %(name)s s primárním klíčem %(key)r neexistuje." - -#: contrib/admin/options.py:860 +msgstr "Položka \"%(name)s\" s primárním klíčem \"%(key)r\" neexistuje." + +#: contrib/admin/options.py:929 #, python-format msgid "Change %s" msgstr "%s: změnit" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:974 msgid "Database error" msgstr "Chyba databáze" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:1010 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." @@ -402,95 +438,97 @@ msgstr[1] "%(count)s položky %(name)s byly úspěšně změněny." msgstr[2] "%(count)s položek %(name)s bylo úspěšně změněno." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1037 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "z %(count)d položky vybráno." +msgstr[1] "ze %(count)d položek vybráno." +msgstr[2] "z %(count)d položek vybráno." + +#: contrib/admin/options.py:1039 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s položka vybrána." +msgstr[1] "Všechny %(total_count)s položky vybrány." +msgstr[2] "Vybráno všech %(total_count)s položek." + +#: contrib/admin/options.py:1091 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně smazán." - -#: contrib/admin/options.py:1054 +msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně odstraněna." + +#: contrib/admin/options.py:1128 #, python-format msgid "Change history: %s" msgstr "Historie změn: %s" -#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Vložte správné uživatelské jméno a heslo (u obou položek se rozlišují malá a " -"velká písmena)." - -#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:22 +#: contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "Vložte správné uživatelské jméno a heslo (u obou položek se rozlišují malá a velká písmena)." + +#: contrib/admin/sites.py:311 +#: contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Přihlaste se znovu, vaše sezení vypršelo." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Vypadá to, že váš prohlížeč nepřijímá cookies. Změňte mu toto nastavení, " -"obnovte tuto stránku a zkuste znovu." - -#: contrib/admin/sites.py:301 contrib/admin/sites.py:307 +#: contrib/admin/sites.py:318 +#: contrib/admin/views/decorators.py:47 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "Vypadá to, že váš prohlížeč nepřijímá cookies. Změňte mu toto nastavení, obnovte tuto stránku a požadavek opakujte." + +#: contrib/admin/sites.py:334 +#: contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Uživatelská jména nemohou obsahovat znak \"@\"." -#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 +#: contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"Vaše e-mailová adresa není vaše uživatelské jméno. Zkuste místo toho \"%s\"." - -#: contrib/admin/sites.py:360 +msgstr "Vaše e-mailová adresa není vaše uživatelské jméno. Zkuste místo toho \"%s\"." + +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Správa webu" -#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 +#: contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Přihlášení" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Správa aplikace %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "" -"Jedno nebo více polí \"%(fieldname)s\" položky typu \"%(name)s\": \"%(obj)s\"" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Jedno nebo více polí \"%(fieldname)s\" položky typu \"%(name)s\":" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Datum:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Čas:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Aktuálně:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Změna:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Hledat" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Přidat další" @@ -505,17 +543,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -537,49 +575,58 @@ 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 "" -"Došlo k chybě. Byla oznámena administrátorovi serveru e-mailem 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 "Došlo k chybě. Byla oznámena správci serveru e-mailem a měla by být brzy odstraněna. Děkujeme za trpělivost." #: contrib/admin/templates/admin/actions.html:4 msgid "Run the selected action" -msgstr "Provést vybranou akci" +msgstr "Provést vybranou operaci" #: contrib/admin/templates/admin/actions.html:4 msgid "Go" msgstr "Provést" +#: contrib/admin/templates/admin/actions.html:10 +msgid "Click here to select the objects across all pages" +msgstr "Klepnutím zde vyberete položky ze všech stránek." + +#: contrib/admin/templates/admin/actions.html:10 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Vybrat všechny položky typu %(module_name)s, celkem %(total_count)s." + +#: contrib/admin/templates/admin/actions.html:12 +msgid "Clear selection" +msgstr "Zrušit výběr" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Vítejte, uživateli" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentace" -#: contrib/admin/templates/admin/base.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Změnit heslo" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Odhlásit se" @@ -591,64 +638,56 @@ msgid "Django administration" msgstr "Správa systému Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Přidat" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Historie" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Zobrazení na webu" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Opravte níže uvedenou chybu." msgstr[1] "Opravte níže uvedené chyby." msgstr[2] "Opravte níže uvedené chyby." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:60 #, python-format msgid "Add %(name)s" msgstr "%(name)s: přidat" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:79 msgid "Filter" msgstr "Filtr" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 +#: forms/formsets.py:302 msgid "Delete" -msgstr "Smazat" +msgstr "Odstranit" #: contrib/admin/templates/admin/delete_confirmation.html:16 #, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Smazání záznamu \"%(escaped_object)s\" typu \"%(object_name)s\" by vyústilo " -"ve vymazání souvisejících objektů, ale vy nemáte oprávnění k mazání " -"následujících typů objektů:" +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Odstranění položky \"%(escaped_object)s\" typu %(object_name)s by vyústilo v odstranění souvisejících položek. Nemáte však oprávnění k odstranění položek následujících typů:" #: contrib/admin/templates/admin/delete_confirmation.html:23 #, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"Opravdu má být smazán záznam \"%(escaped_object)s\" typu \"%(object_name)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 \"%(escaped_object)s\"? All of the following related items will be deleted:" +msgstr "Opravdu má být odstraněna položka \"%(escaped_object)s\" typu %(object_name)s? Následující související položky budou všechny odstraněny:" #: contrib/admin/templates/admin/delete_confirmation.html:28 #: contrib/admin/templates/admin/delete_selected_confirmation.html:33 @@ -657,26 +696,17 @@ #: contrib/admin/templates/admin/delete_selected_confirmation.html:9 msgid "Delete multiple objects" -msgstr "Smazat vybrané objekty" +msgstr "Odstranit vybrané položky" #: contrib/admin/templates/admin/delete_selected_confirmation.html:15 #, python-format -msgid "" -"Deleting the %(object_name)s would result in deleting related objects, but " -"your account doesn't have permission to delete the following types of " -"objects:" -msgstr "" -"Smazání záznamu \"%(object_name)s\" by vyústilo ve vymazání souvisejících " -"objektů, ale vy nemáte oprávnění pro mazání následujících typů objektů:" +msgid "Deleting the %(object_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Odstranění položky \"%(object_name)s\" by vyústilo v odstranění souvisejících položek. Nemáte však oprávnění k odstranění položek následujících typů:" #: contrib/admin/templates/admin/delete_selected_confirmation.html:22 #, python-format -msgid "" -"Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" -msgstr "" -"Opravdu má být smazán záznam typu \"%(object_name)s\"? Všechny následující " -"související položky budou smazány:" +msgid "Are you sure you want to delete the selected %(object_name)s objects? All of the following objects and their related items will be deleted:" +msgstr "Opravdu mají být odstraněny vybrané položky typu %(object_name)s? Následující položky a položky s nimi související budou všechny odstraněny:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -698,11 +728,11 @@ #: contrib/admin/templates/admin/index.html:53 msgid "Recent Actions" -msgstr "Poslední akce" +msgstr "Poslední operace" #: contrib/admin/templates/admin/index.html:54 msgid "My Actions" -msgstr "Mé akce" +msgstr "Vaše operace" #: contrib/admin/templates/admin/index.html:58 msgid "None available" @@ -713,14 +743,8 @@ msgstr "Neznámý obsah" #: contrib/admin/templates/admin/invalid_setup.html:7 -msgid "" -"Something's wrong with your database installation. Make sure the appropriate " -"database tables have been created, and make sure the database is readable by " -"the appropriate user." -msgstr "" -"Potíže s nainstalovanou databází. Ujistěte se, že byly vytvořeny " -"odpovídající tabulky a že databáze je přístupná pro čtení příslušným " -"uživatelem." +msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." +msgstr "Potíže s nainstalovanou databází. Ujistěte se, že byly vytvořeny odpovídající tabulky a že databáze je přístupná pro čtení příslušným uživatelem." #: contrib/admin/templates/admin/login.html:19 msgid "Username:" @@ -739,27 +763,22 @@ msgstr "Uživatel" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" -msgstr "Akce" - -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j. n. Y H:i" +msgstr "Operace" #: contrib/admin/templates/admin/object_history.html:38 -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 pomocí " -"administrátorského rozhraní." +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Tato položka nemá historii změn. Pravděpodobně nebyla přidána tímto administračním rozhraním." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "Zobrazit vše" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Uložit" + #: contrib/admin/templates/admin/search_form.html:8 msgid "Search" msgstr "Hledat" @@ -777,60 +796,60 @@ msgid "%(full_result_count)s total" msgstr "Celkem %(full_result_count)s" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Uložit" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" -msgstr "Uložit jako nový záznam" +msgstr "Uložit jako novou položku" #: contrib/admin/templates/admin/submit_line.html:6 msgid "Save and add another" -msgstr "Uložit a přidat další záznam" +msgstr "Uložit a přidat další položku" #: contrib/admin/templates/admin/submit_line.html:7 msgid "Save and continue editing" msgstr "Uložit a pokračovat v úpravách" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "" -"Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více " -"uživatelských nastavení." - -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Uživatelské jméno" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Heslo" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Heslo (znovu)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Pro ověření vložte stejné heslo znovu." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více uživatelských nastavení." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Vložte nové heslo pro uživatele %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:61 +#: contrib/auth/forms.py:186 +msgid "Password" +msgstr "Heslo" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Heslo (znovu)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Pro ověření vložte stejné heslo znovu." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Přidat %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Odebrat" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" -msgstr "Smazat?" +msgstr "Odstranit?" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." @@ -841,9 +860,9 @@ msgstr "Přihlaste se 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Změna hesla" @@ -856,29 +875,21 @@ 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 "" -"Vložte svoje staré heslo a poté dvakrát vložte nové heslo. Tak ověříme, že " -"bylo zadáno správně." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Staré heslo:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nové heslo:" - #: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Potvrdit heslo:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +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 "Vložte svoje současné heslo a poté vložte dvakrát heslo nové. Omezíme tak možnost překlepu." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Současné heslo" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nové heslo" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Změnit heslo" @@ -910,22 +921,24 @@ msgstr "Vložte nové heslo" #: contrib/admin/templates/registration/password_reset_confirm.html:14 -msgid "" -"Please enter your new password twice so we can verify you typed it in " -"correctly." +msgid "Please enter your new password twice so we can verify you typed it in correctly." msgstr "Vložte dvakrát nové heslo. Tak ověříme, že bylo zadáno správně." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nové heslo:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Potvrdit heslo:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Obnovení hesla bylo neúspěšné" #: contrib/admin/templates/registration/password_reset_confirm.html:28 -msgid "" -"The password reset link was invalid, possibly because it has already been " -"used. Please request a new password reset." -msgstr "" -"Odkaz pro obnovení hesla byl neplatný, možná již byl použit. Požádejte o " -"obnovení hesla znovu." +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "Odkaz pro obnovení hesla byl neplatný, možná již byl použit. Požádejte o obnovení hesla znovu." #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 @@ -933,12 +946,8 @@ msgstr "Obnovení hesla bylo úspěšné" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed you instructions for setting your password to the e-mail " -"address you submitted. You should be receiving it shortly." -msgstr "" -"Poslali jsme vám e-mailem pokyny pro nastavení hesla na vámi zadanou e-" -"mailovou adresu. Za chvíli by mely dorazit do vaší schránky." +msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Poslali jsme vám e-mailem pokyny pro nastavení hesla na vámi zadanou e-mailovou adresu. Za chvíli by měly dorazit do vaší schránky." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -967,12 +976,8 @@ msgstr "Tým aplikace %(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 e-mail " -"instructions for setting a new one." -msgstr "" -"Zapomněl(a) jste své současné heslo? Vložte svou e-mailovou adresu a e-" -"mailem obdržíte pokyny pro nastavení nového." +msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." +msgstr "Zapomněl(a) jste své současné heslo? Vložte svou e-mailovou adresu a e-mailem obdržíte pokyny pro nastavení nového." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -982,7 +987,7 @@ msgid "Reset my password" msgstr "Obnovit heslo" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:240 msgid "All dates" msgstr "Všechna data" @@ -996,155 +1001,84 @@ msgid "Select %s to change" msgstr "Vyberte položku %s ke změně" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 +#: contrib/sites/models.py:38 msgid "site" msgstr "web" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "šablona" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 +#: contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "tag:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 +#: contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filtr:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 +#: contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "pohled (view):" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Aplikace %r nenalezena" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Model %(model_name)r v aplikaci %(app_label)r nenalezen" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" -msgstr "související objekt `%(app_label)s.%(data_type)s`" - -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +msgstr "související položka `%(app_label)s.%(data_type)s`" + +#: contrib/admindocs/views.py:209 +#: contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 +#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 +#: contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 +#: contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" -msgstr "související objekty `%(app_label)s.%(object_name)s`" - -#: contrib/admindocs/views.py:242 +msgstr "související položky `%(app_label)s.%(object_name)s`" + +#: contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "Vše: %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 +#: contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "Počet: %s" -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" -msgstr "Pole na objektech %s" - -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 -msgid "Integer" -msgstr "Celé číslo" - -#: contrib/admindocs/views.py:316 -msgid "Boolean (Either True or False)" -msgstr "Boolean (buď Ano (True), nebo Ne (False))" - -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Řetězec (max. %(max_length)s znaků)" - -#: contrib/admindocs/views.py:318 -msgid "Comma-separated integers" -msgstr "Celá čísla oddělená čárkou" - -#: contrib/admindocs/views.py:319 -msgid "Date (without time)" -msgstr "Datum (bez času)" - -#: contrib/admindocs/views.py:320 -msgid "Date (with time)" -msgstr "Datum (s časem)" - -#: contrib/admindocs/views.py:321 -msgid "Decimal number" -msgstr "Desetinné číslo" - -#: contrib/admindocs/views.py:322 -msgid "E-mail address" -msgstr "E-mailová adresa" - -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 -msgid "File path" -msgstr "Cesta k souboru" - -#: contrib/admindocs/views.py:325 -msgid "Floating point number" -msgstr "Číslo s pohyblivou řádovou čárkou" - -#: contrib/admindocs/views.py:329 contrib/comments/models.py:60 -msgid "IP address" -msgstr "Adresa IP" - -#: contrib/admindocs/views.py:331 -msgid "Boolean (Either True, False or None)" -msgstr "Boolean (buď Ano (True), Ne (False) nebo Nic (None))" - -#: contrib/admindocs/views.py:332 -msgid "Relation to parent model" -msgstr "Vztah k rodičovskému modelu" - -#: contrib/admindocs/views.py:333 -msgid "Phone number" -msgstr "Telefonní číslo" - -#: contrib/admindocs/views.py:338 -msgid "Text" -msgstr "Text" - -#: contrib/admindocs/views.py:339 -msgid "Time" -msgstr "Čas" - -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:341 -msgid "U.S. state (two uppercase letters)" -msgstr "Stát v USA (dvě velká písmena)" - -#: contrib/admindocs/views.py:342 -msgid "XML text" -msgstr "XML text" - -#: contrib/admindocs/views.py:368 +msgstr "Pole položek typu %s" + +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" -msgstr "%s pravděpodobně není objekt typu urlpattern" +msgstr "Objekt %s patrně není typu urlpattern." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -1165,15 +1099,11 @@ "your computer is \"internal\").

          \n" msgstr "" "\n" -"

          Pro nainstalování bookmarkletů, přetáhněte odkaz na vaše " -"záložky (oblíbené),\n" -"nebo klikněte pravým tlačítkem na odkaz a přidejte ho k vašim záložkám " -"(oblíbeným). Nyní můžete\n" +"

          Pro nainstalování bookmarkletů, přetáhněte odkaz na vaše záložky (oblíbené),\n" +"nebo klepněte pravým tlačítkem na odkaz a přidejte ho k vašim záložkám (oblíbeným). Nyní můžete\n" "zvolit bookmarklet z libovolné stránky. Poznámka: Některé tyto\n" -"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je " -"nastaven jako\n" -"\"\"interní\" (promluvte si s vaším administrátorem, jestli si nejste " -"jisti,\n" +"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je nastaven jako\n" +"\"\"interní\" (promluvte si s vaším správcem, jestli si nejste jisti,\n" "zda je váš počítač \"interní\").

          \n" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 @@ -1181,272 +1111,285 @@ msgstr "Dokumentace k této stránce" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" -"Z libovolné stránky otevře dokumentaci pohledu (view), který generoval tuto " -"stránku." +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "Z libovolné stránky otevře dokumentaci pohledu (view), který generoval tuto stránku." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 msgid "Show object ID" -msgstr "Ukázat id objektu" +msgstr "Ukázat id položky" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Ukáže content-type a unikátní ID stránek, reprezentujících jediný objekt." +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Zobrazí content-type a unikátní ID stránek reprezentujících jedinou položku." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" -msgstr "Upravit tento objekt (ve stávajícím okně)" +msgstr "Upravit tuto položku (ve stávajícím okně)" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Přepne do prostředí správy pro stránky reprezentující jediný objekt." +msgstr "Přepne do administračního rozhraní stránek reprezentujících jedinou položku." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 msgid "Edit this object (new window)" -msgstr "Upravit tento objekt (v novém okně)" +msgstr "Upravit tuto položku (v novém okně)" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 msgid "As above, but opens the admin page in a new window." msgstr "Jako výše, ale otevře prostředí správy v novém okně." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Osobní údaje" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Oprávnění" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Důležitá data" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Skupiny" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Uživatel: přidat" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Změna hesla byla úspěšná." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Heslo pro uživatele %s: změnit" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Požadováno. 30 znaků nebo méně. Pouze alfanumerické znaky (písmena, číslice " -"nebo podtržítka)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Tato hodnota musí obsahovat pouze písmena, číslice nebo podtržítka." +#: contrib/auth/forms.py:14 +#: contrib/auth/forms.py:48 +#: contrib/auth/forms.py:60 +msgid "Username" +msgstr "Uživatelské jméno" + +#: contrib/auth/forms.py:15 +#: contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "Požadováno. 30 znaků nebo méně. Pouze písmena, číslice a znaky @/./+/-/_." + +#: contrib/auth/forms.py:16 +#: contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Hodnota může obsahovat pouze písmena, číslice a znaky @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Potvrzení hesla" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Uživatel s tímto jménem již existuje." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 +#: contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Hesla se neshodují." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Tento účet je neaktivní." -#: contrib/auth/forms.py:87 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Váš prohlížeč zřejmě nemá povoleno přijímat cookies, které jsou ale potřeba " -"pro přihlášení." - -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:88 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "Váš prohlížeč zřejmě nemá povoleno přijímat cookies, které jsou ale potřeba pro přihlášení." + +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-mail" -#: contrib/auth/forms.py:109 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" -"K této e-mailové adrese není přiřazen žádný uživatelský účet. Určitě jste " -"zde registrováni?" - -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:110 +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "K této e-mailové adrese není přiřazen žádný uživatelský účet. Určitě jste zde registrováni?" + +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Obnovení hesla na webu %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nové heslo" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Potvrzení nového hesla" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Staré heslo" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "Vaše staré heslo nebylo vloženo správně. Zkuste to znovu." - -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +msgstr "Vaše současné heslo nebylo vloženo správně. Zkuste to znovu." + +#: contrib/auth/models.py:66 +#: contrib/auth/models.py:94 msgid "name" msgstr "název" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "kódový název" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "oprávnění" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 +#: contrib/auth/models.py:95 msgid "permissions" msgstr "oprávnění" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "skupina" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 +#: contrib/auth/models.py:206 msgid "groups" msgstr "skupiny" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "uživatelské jméno" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Požadováno. 30 znaků nebo méně. Pouze písmena, číslice a znaky @/./+/-/_." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "křestní jméno" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "příjmení" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "e-mailová adresa" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "heslo" -#: contrib/auth/models.py:132 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "" -"Použijte buď formát \"[algo]$[salt]$[hexdigest]\" nebo formulář pro změnu hesla." - -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:200 +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "Použijte buď tvar \"[algo]$[salt]$[hexdigest]\" nebo formulář pro změnu hesla." + +#: contrib/auth/models.py:201 msgid "staff status" -msgstr "administrativní přístup" - -#: contrib/auth/models.py:133 +msgstr "administrační přístup" + +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Určuje, zda se uživatel může přihlásit do správy tohoto webu." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "aktivní" -#: contrib/auth/models.py:134 -msgid "" -"Designates whether this user should be treated as active. Unselect this " -"instead of deleting accounts." -msgstr "" -"Určuje, zda bude uživatel považován za aktivního. Toto vypínejte místo " -"mazání účtů." - -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:202 +msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." +msgstr "Určuje, zda bude uživatel považován za aktivního. Použijte tuto možnost místo odstranění účtů." + +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "superuživatel" -#: contrib/auth/models.py:135 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" -"Určuje, že uživatel má veškerá oprávnění bez jejich explicitního přiřazení." - -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:203 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "Určuje, že uživatel má veškerá oprávnění bez jejich explicitního přiřazení." + +#: contrib/auth/models.py:204 msgid "last login" msgstr "poslední přihlášení" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "datum registrace" -#: contrib/auth/models.py:139 -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í bude uživatel mít všechna oprávnění pro " -"každou skupinu, jejímž je členem." - -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:207 +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í bude uživatel mít všechna oprávnění pro každou skupinu, jejímž je členem." + +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "uživatelská oprávnění" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 +#: contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "uživatel" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "uživatelé" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "zpráva" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Odhlášeno" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 +#: forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Vložte platnou e-mailovou adresu." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Obsah" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadata" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "označen" +msgstr[1] "označeny" +msgstr[2] "označeno" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Označit vybrané komentáře" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "schválen" +msgstr[1] "schváleny" +msgstr[2] "schváleno" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Schválit vybrané komentáře" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "odebrán" +msgstr[1] "odebrány" +msgstr[2] "odebráno" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Odebrat vybrané komentáře" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 komentář byl úspěšně %(action)s." +msgstr[1] "%(count)s komentáře byly úspěšně %(action)s." +msgstr[2] "%(count)s komentářů bylo úspěšně %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1458,7 +1401,6 @@ msgstr "Poslední komentáře na webu %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Jméno" @@ -1466,12 +1408,18 @@ msgid "Email address" msgstr "E-mailová adresa" +#: contrib/comments/forms.py:95 +#: contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 +#: db/models/fields/__init__.py:1100 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Komentář" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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." @@ -1479,18 +1427,18 @@ msgstr[1] "Mluvte slušně! Slova %s jsou zde nepřípustná." msgstr[2] "Mluvte slušně! Slova %s jsou zde nepřípustná." -#: contrib/comments/forms.py:180 -msgid "" -"If you enter anything in this field your comment will be treated as spam" +#: contrib/comments/forms.py:182 +msgid "If you enter anything in this field your comment will be treated as spam" msgstr "Jestliže do tohoto pole cokoli zadáte, bude komentář považován za spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 +#: contrib/contenttypes/models.py:81 msgid "content type" msgstr "typ obsahu" #: contrib/comments/models.py:24 msgid "object ID" -msgstr "ID objektu" +msgstr "ID položky" #: contrib/comments/models.py:52 msgid "user's name" @@ -1504,7 +1452,8 @@ msgid "user's URL" msgstr "URL uživatele" -#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:56 +#: contrib/comments/models.py:76 #: contrib/comments/models.py:169 msgid "comment" msgstr "komentář" @@ -1513,45 +1462,38 @@ msgid "date/time submitted" msgstr "datum a čas byly zaslané" +#: contrib/comments/models.py:60 +#: db/models/fields/__init__.py:895 +msgid "IP address" +msgstr "Adresa IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "je veřejný" #: contrib/comments/models.py:62 -msgid "" -"Uncheck this box to make the comment effectively disappear from the site." -msgstr "" -"Pokud zrušíte zaškrtnutí tohoto políčka, komentář se na stránce nezobrazí." +msgid "Uncheck this box to make the comment effectively disappear from the site." +msgstr "Pokud zrušíte zaškrtnutí tohoto políčka, komentář se na stránce nezobrazí." #: contrib/comments/models.py:64 msgid "is removed" msgstr "je odebrán" #: contrib/comments/models.py:65 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Zaškrtněte, pokud je komentář nevhodný. Místo něj bude zobrazena zpráva " -"\"Tento komentář byl odebrán\"." +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "Zaškrtněte, pokud je komentář nevhodný. Místo něj bude zobrazena zpráva \"Tento komentář byl odebrán\"." #: contrib/comments/models.py:77 msgid "comments" msgstr "komentář" #: contrib/comments/models.py:119 -msgid "" -"This comment was posted by an authenticated user and thus the name is read-" -"only." -msgstr "" -"Tento komentář zaslal přihlášený uživatel, jméno tedy není možné změnit." +msgid "This comment was posted by an authenticated user and thus the name is read-only." +msgstr "Tento komentář zaslal přihlášený uživatel, jméno tedy není možné změnit." #: contrib/comments/models.py:128 -msgid "" -"This comment was posted by an authenticated user and thus the email is read-" -"only." -msgstr "" -"Tento komentář zaslal přihlášený uživatel, e-mail tedy není možné změnit." +msgid "This comment was posted by an authenticated user and thus the email is read-only." +msgstr "Tento komentář zaslal přihlášený uživatel, e-mail tedy není možné změnit." #: contrib/comments/models.py:153 #, python-format @@ -1582,7 +1524,7 @@ #: contrib/comments/models.py:182 msgid "comment flags" -msgstr "značka komentáře" +msgstr "značky komentáře" #: contrib/comments/templates/comments/approve.html:4 msgid "Approve a comment" @@ -1593,7 +1535,6 @@ msgstr "Opravdu chcete zveřejnit tento komentář?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Schválit" @@ -1604,10 +1545,8 @@ #: contrib/comments/templates/comments/approved.html:7 #: contrib/comments/templates/comments/deleted.html:7 #: contrib/comments/templates/comments/flagged.html:7 -msgid "" -"Thanks for taking the time to improve the quality of discussion on our site" -msgstr "" -"Děkujeme za váš čas věnovaný zlepšení kvality diskuze na našich stránkách" +msgid "Thanks for taking the time to improve the quality of discussion on our site" +msgstr "Děkujeme za váš čas věnovaný zlepšení kvality diskuze na našich stránkách" #: contrib/comments/templates/comments/delete.html:4 msgid "Remove a comment" @@ -1617,11 +1556,6 @@ msgid "Really remove this comment?" msgstr "Opravdu chcete odebrat tento komentář?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Odebrat" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Děkujeme za odebrání" @@ -1652,39 +1586,6 @@ msgid "Preview" msgstr "Náhled" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Fronta komentářů ke schválení" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Žádné komentáře ke schválení" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "E-mail" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Přihlášený?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Adresa IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Datum vložení" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "ano" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "ne" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Děkujeme za vložení komentáře" @@ -1713,27 +1614,21 @@ msgid "or make changes" msgstr "nebo upravit" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "název třídy modelu v Pythonu" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "typy obsahu" #: contrib/flatpages/admin.py:9 -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." #: contrib/flatpages/admin.py:11 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Tato hodnota musí obsahovat pouze písmena, číslice, podtržítka, pomlčky nebo " -"lomítka." +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "Hodnota smí obsahovat pouze písmena, číslice, podtržítka, pomlčky nebo lomítka." #: contrib/flatpages/admin.py:22 msgid "Advanced options" @@ -1756,12 +1651,8 @@ msgstr "název šablony" #: contrib/flatpages/models.py:12 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Příklad: \"flatpages/kontaktni_stranka.html\". Pokud toto není zadáno, bude " -"použita šablona \"flatpages/default.html\"." +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "Příklad: \"flatpages/kontaktni_stranka.html\". Pokud toto není zadáno, bude použita šablona \"flatpages/default.html\"." #: contrib/flatpages/models.py:13 msgid "registration required" @@ -1779,13 +1670,41 @@ msgid "flat pages" msgstr "statické stránky" -#: contrib/formtools/wizard.py:130 -msgid "" -"We apologize, but your form has expired. Please continue filling out the " -"form from this page." -msgstr "" -"Platnost formuláře bohužel vypršela. Pokračujte vyplněním formuláře z této " -"stránky." +#: contrib/formtools/wizard.py:140 +msgid "We apologize, but your form has expired. Please continue filling out the form from this page." +msgstr "Platnost formuláře bohužel vypršela. Pokračujte vyplněním formuláře z této stránky." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "Základní GIS pole -- mapováno na typ Geometry podle specifikace OpenGIS." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Bod" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Úsek čáry" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Polygon" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Mnohonásobný bod" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Mnohonásobný úsek čáry" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Mnohonásobný polygon" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Kolekce geometrií" #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." @@ -1800,12 +1719,8 @@ msgstr "Neplatný typ geometrie." #: contrib/gis/forms/fields.py:20 -msgid "" -"An error occurred when transforming the geometry to the SRID of the geometry " -"form field." -msgstr "" -"Nastala chyba při transformaci geometrie na identifikátor SRID geometrického " -"formulářového pole." +msgid "An error occurred when transforming the geometry to the SRID of the geometry form field." +msgstr "Nastala chyba při transformaci geometrie na identifikátor SRID geometrického formulářového pole." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1895,27 +1810,27 @@ msgid "yesterday" msgstr "včera" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." -msgstr "Zadejte poštovní směrovací číslo ve formátu NNNN nebo ANNNNAAA." - -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 -msgid "This field requires only numbers." -msgstr "Toto pole musí obsahovat pouze číslice." +msgstr "Zadejte poštovní směrovací číslo ve tvaru NNNN nebo ANNNNAAA." #: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "Pole smí obsahovat pouze číslice." + +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." -msgstr "Toto pole musí obsahovat 7 nebo 8 číslic." - -#: contrib/localflavor/ar/forms.py:79 -msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." -msgstr "" -"Zadejte platné identifikační číslo CUIT ve formátu XX-XXXXXXXX-X nebo " -"XXXXXXXXXXXX" +msgstr "Pole smí obsahovat jen 7 nebo 8 číslic." #: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Zadejte platné identifikační číslo CUIT ve tvaru XX-XXXXXXXX-X nebo XXXXXXXXXXXX" + +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Neplatné CUIT" @@ -1955,57 +1870,55 @@ msgid "Vienna" msgstr "Vídeň" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 +#: contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXX." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXX." #: contrib/localflavor/at/forms.py:48 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." -msgstr "Zadejte platné rodné číslo (ASSN) ve formátu XXXX XXXXXX." - -#: contrib/localflavor/au/forms.py:16 +msgstr "Zadejte platné rodné číslo (ASSN) ve tvaru XXXX XXXXXX." + +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Zadejte čtyřmístné poštovní směrovací číslo." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXXXX-XXX." - -#: contrib/localflavor/br/forms.py:30 +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXXXX-XXX." + +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "Telefonní číslo musí být ve formátu XX-XXXX-XXXX." - -#: contrib/localflavor/br/forms.py:58 -msgid "" -"Select a valid brazilian state. That state is not one of the available " -"states." +msgstr "Telefonní číslo smí být pouze ve tvaru XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:59 +msgid "Select a valid brazilian state. That state is not one of the available states." msgstr "Neplatný brazilský stát. Vyberte jeden z nabízených států." -#: contrib/localflavor/br/forms.py:94 -msgid "Invalid CPF number." -msgstr "Neplatné číslo CPF." - #: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "Neplatné číslo CPF." + +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." -msgstr "Toto pole musí obsahovat nejvýše 11 číslic nebo 14 znaků." - -#: contrib/localflavor/br/forms.py:134 +msgstr "Pole smí obsahovat nejvýše 11 číslic nebo 14 znaků." + +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Neplatné číslo CNPJ." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" -msgstr "Toto pole musí obsahovat nejméně 14 číslic." - -#: contrib/localflavor/ca/forms.py:17 +msgstr "Pole smí obsahovat nejméně 14 číslic." + +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXX XXX." - -#: contrib/localflavor/ca/forms.py:88 +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXX XXX." + +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "" -"Zadejte platné kanadské číslo soc. pojištění (SID) ve formátu XXX-XXX-XXX." +msgstr "Zadejte platné kanadské číslo soc. pojištění (SID) ve tvaru XXX-XXX-XXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -2111,23 +2024,19 @@ msgid "Zurich" msgstr "Curych" -#: contrib/localflavor/ch/forms.py:64 -msgid "" -"Enter a valid Swiss identity or passport card number in X1234567<0 or " -"1234567890 format." -msgstr "" -"Zadejte platné švýcarské identifikační číslo nebo číslo cestovního pasu ve " -"formátu X1234567<0 nebo 1234567890." - -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/ch/forms.py:65 +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "Zadejte platné švýcarské identifikační číslo nebo číslo cestovního pasu ve tvaru X1234567<0 nebo 1234567890." + +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Zadejte platné chilské RUT." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "Zadejte platné chilské RUT ve formátu XX.XXX.XXX-X." - -#: contrib/localflavor/cl/forms.py:31 +msgstr "Zadejte platné chilské RUT ve tvaru XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Neplatné RUT." @@ -2187,23 +2096,24 @@ msgid "Moravian-Silesian Region" msgstr "Moravskoslezský kraj" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 +#: contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXXX nebo XXX XX." - -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Zadejte rodné číslo ve formátu XXXXXX/XXXX nebo XXXXXXXXXX." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXXX nebo XXX XX." #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Neplatný nepovinný parametr Gender, platné hodnoty jsou 'f' a 'm'." +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Zadejte rodné číslo ve tvaru XXXXXX/XXXX nebo XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Neplatný nepovinný parametr Gender, platné hodnoty jsou 'f' a 'm'." + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Zadejte platné rodné číslo." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Zadejte platné IČ." @@ -2271,18 +2181,15 @@ msgid "Thuringia" msgstr "Durynsko" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 +#: contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXXX." - -#: contrib/localflavor/de/forms.py:41 -msgid "" -"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " -"format." -msgstr "" -"Zadejte platné německé identifikační číslo ve formátu XXXXXXXXXXX-XXXXXXX-" -"XXXXXXX-X." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXXX." + +#: contrib/localflavor/de/forms.py:42 +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "Zadejte platné německé identifikační číslo ve tvaru XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" @@ -2551,80 +2458,506 @@ msgid "Valencian Community" msgstr "Valencie" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." -msgstr "Zadejte platné poštovní směrovací číslo ve formátu 01XXX - 52XXX." - -#: contrib/localflavor/es/forms.py:39 -msgid "" -"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " -"9XXXXXXXX." -msgstr "" -"Zadejte platné telefonní číslo v jednom z formátů: 6XXXXXXXX, 8XXXXXXXX nebo " -"9XXXXXXXX." - -#: contrib/localflavor/es/forms.py:66 +msgstr "Zadejte platné poštovní směrovací číslo ve tvaru 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:40 +msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." +msgstr "Zadejte platné telefonní číslo v jednom ze tvarů 6XXXXXXXX, 8XXXXXXXX nebo 9XXXXXXXX." + +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Zadejte platné hodnoty NIF, NIE nebo CIF." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Zadejte platné hodnoty NIF nebo NIE." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Neplatný kontrolní součet pro NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Neplatný kontrolní součet pro NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Neplatný kontrolní součet pro CIF." -#: contrib/localflavor/es/forms.py:142 -msgid "" -"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "" -"Zadejte platné číslo bankovního účtu ve formátu XXXX-XXXX-XX-XXXXXXXXXX." - #: contrib/localflavor/es/forms.py:143 +msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Zadejte platné číslo bankovního účtu ve tvaru XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Neplatný kontrolní součet pro číslo bankovního účtu." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Zadejte platné finské rodné číslo." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonní číslo musí být ve tvaru 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Zadejte platné poštovní směrovací číslo." + +#: contrib/localflavor/id/forms.py:68 +#: contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Zadejte platné telefonní číslo" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Vložte platné číslo poznávací značky vozu" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Vložte platné číslo NIK/KTP" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi Barat" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps Consulate" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Federální vláda" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXXXXX." - -#: contrib/localflavor/is_/forms.py:17 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "Zadejte platné islandské identifikační číslo ve formátu XXXXXX-XXXX." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXXXXX." #: contrib/localflavor/is_/forms.py:18 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Zadejte platné islandské identifikační číslo ve tvaru XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Neplatné islandské identifikační číslo." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Zadejte platné poštovní směrovací číslo." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Zadejte platné číslo SSN." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Zadejte platné daňové identifikační číslo." #: contrib/localflavor/jp/forms.py:16 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXXXXX nebo XXX-XXXX." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXXXXX nebo XXX-XXXX." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" @@ -2814,6 +3147,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Vložte platné kuvajtské občanské identifikační číslo" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2942,15 +3279,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Zadejte platné poštovní směrovací číslo" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Zadejte platné telefonní číslo" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Zadejte platné číslo SoFi" @@ -3002,17 +3335,17 @@ msgid "Zuid-Holland" msgstr "Jižní Holandsko" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Zadejte platné norské číslo sociálního pojištěni (SSN)." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." -msgstr "Toto pole musí obsahovat 8 číslic." - -#: contrib/localflavor/pe/forms.py:52 +msgstr "Pole musí obsahovat 8 číslic." + +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." -msgstr "Toto pole musí obsahovat 11 číslic." +msgstr "Pole musí obsahovat 11 číslic." #: contrib/localflavor/pl/forms.py:38 msgid "National Identification Number consists of 11 digits." @@ -3023,11 +3356,8 @@ msgstr "Neplatný kontrolní součet pro Národní identifikační číslo." #: contrib/localflavor/pl/forms.py:71 -msgid "" -"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "" -"Zadejte daňové identifikační číslo (NIP) ve formátu XXX-XXX-XX-XX nebo XX-XX-" -"XXX-XXX." +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Zadejte daňové identifikační číslo (NIP) ve tvaru XXX-XXX-XX-XX nebo XX-XX-XXX-XXX." #: contrib/localflavor/pl/forms.py:72 msgid "Wrong checksum for the Tax Number (NIP)." @@ -3043,7 +3373,7 @@ #: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XX-XXX." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XX-XXX." #: contrib/localflavor/pl/pl_voivodeships.py:8 msgid "Lower Silesia" @@ -3109,6 +3439,14 @@ msgid "West Pomerania" msgstr "Západopomořanské vojvodství" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Telefonní číslo musí mít 9 číslo nebo začínat + či 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Zadejte platné CIF." @@ -3119,15 +3457,115 @@ #: contrib/localflavor/ro/forms.py:141 msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" -msgstr "Zadejte platné IBAN ve formátu ROXX-XXXX-XXXX-XXXX-XXXX-XXXX." +msgstr "Zadejte platné IBAN ve tvaru ROXX-XXXX-XXXX-XXXX-XXXX-XXXX." #: contrib/localflavor/ro/forms.py:171 msgid "Phone numbers must be in XXXX-XXXXXX format." -msgstr "Telefonní číslo musí být ve formátu XXXX-XXXXXX." +msgstr "Telefonní číslo musí být ve tvaru XXXX-XXXXXX." #: contrib/localflavor/ro/forms.py:194 msgid "Enter a valid postal code in the format XXXXXX" -msgstr "Zadejte platné poštovní směrovací číslo ve formátu XXXXXX." +msgstr "Zadejte platné poštovní směrovací číslo ve tvaru XXXXXX." + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Vložte platné číslo švédské organizace." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Vložte platné švédské osobní identifikační číslo." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Koordinační čísla nejsou povolena." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Vložte švédské poštovní směrovací číslo ve tvaru XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -3761,19 +4199,43 @@ msgid "Wales" msgstr "Wales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Zadejte poštovní směrovací číslo ve formátu XXXXX nebo XXXXX-XXXX." - -#: contrib/localflavor/us/forms.py:54 +msgstr "Zadejte poštovní směrovací číslo ve tvaru XXXXX nebo XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefonní číslo musí být ve tvaru XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "Zadejte platné osobní číslo (U.S. SSN) ve formátu XXX-XX-XXXX." - -#: contrib/localflavor/za/forms.py:20 +msgstr "Zadejte platné osobní číslo (U.S. SSN) ve tvaru XXX-XX-XXXX." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Vložte stát USA nebo teritorium." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stát v USA (dvě velká písmena)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefonní číslo" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Vložte platné číslo CI ve tvaru X.XXX.XXX-X,XXXXXXX-X nebo XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Vložte platné číslo CI." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Zadejte platné jihoafrické identifikační číslo" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Zadejte platné jihoafrické poštovní směrovací číslo" @@ -3813,28 +4275,25 @@ msgid "Western Cape" msgstr "Západní Kapsko" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "opožděně vyhodnocená zpráva" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "přesměrovat z" #: contrib/redirects/models.py:8 -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. Příklad: \"/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. Příklad: \"/udalosti/hledat/\"." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "přesměrovat na" #: contrib/redirects/models.py:10 -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://\"." #: contrib/redirects/models.py:13 msgid "redirect" @@ -3876,250 +4335,351 @@ msgid "sites" msgstr "weby" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Tato hodnota musí být celé číslo." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Tato hodnota musí být buď Ano (True), nebo Ne (False)." - -#: db/models/fields/__init__.py:427 -msgid "This field cannot be null." -msgstr "Toto pole nemůže být prázdné (null)." - -#: db/models/fields/__init__.py:443 +#: core/validators.py:20 +#: forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Vložte platnou hodnotu." + +#: core/validators.py:87 +#: forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Vložte platnou adresu URL." + +#: core/validators.py:89 +#: forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Tato adresa URL je zřejmě neplatný odkaz." + +#: core/validators.py:123 +#: forms/fields.py:873 +msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Vložte platný identifikátor složený pouze z písmen, čísel, podtržítek a pomlček." + +#: core/validators.py:126 +#: forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Vložte platnou adresu typu IPv4." + +#: core/validators.py:129 +#: db/models/fields/__init__.py:571 msgid "Enter only digits separated by commas." msgstr "Vložte pouze číslice oddělené čárkami." -#: db/models/fields/__init__.py:474 +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Hodnota musí být %(limit_value)s (nyní je %(show_value)s)." + +#: core/validators.py:153 +#: forms/fields.py:205 +#: forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Hodnota musí být menší nebo rovna %(limit_value)s." + +#: core/validators.py:158 +#: forms/fields.py:206 +#: forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Hodnota musí být větší nebo rovna %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "Ensure this value has at least %(limit_value)d characters (it has %(show_value)d)." +msgstr "Hodnota musí mít alespoň %(limit_value)d znaků, ale nyní jich má %(show_value)d." + +#: core/validators.py:170 +#, python-format +msgid "Ensure this value has at most %(limit_value)d characters (it has %(show_value)d)." +msgstr "Hodnota smí mít nejvýše %(limit_value)d znaků, ale nyní jich má %(show_value)d." + +#: db/models/base.py:818 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "Pole %(field_name)s musí být unikátní testem %(lookup)s pole %(date_field)s." + +#: db/models/base.py:833 +#: db/models/base.py:841 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Položka %(model_name)s s touto hodnotou v poli %(field_label)s již existuje." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Hodnota %r není platnou volbou." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "Pole nemůže být null." + +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Pole nemůže být prázdné." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Pole typu: %(field_type)s" + +#: db/models/fields/__init__.py:450 +#: db/models/fields/__init__.py:851 +#: db/models/fields/__init__.py:960 +#: db/models/fields/__init__.py:971 +#: db/models/fields/__init__.py:998 +msgid "Integer" +msgstr "Celé číslo" + +#: db/models/fields/__init__.py:454 +#: db/models/fields/__init__.py:849 +msgid "This value must be an integer." +msgstr "Hodnota musí být celé číslo." + +#: db/models/fields/__init__.py:489 +msgid "This value must be either True or False." +msgstr "Hodnota musí být buď Ano (True) nebo Ne (False)." + +#: db/models/fields/__init__.py:491 +msgid "Boolean (Either True or False)" +msgstr "Pravdivost (buď Ano (True), nebo Ne (False))" + +#: db/models/fields/__init__.py:538 +#: db/models/fields/__init__.py:981 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Řetězec (max. %(max_length)s znaků)" + +#: db/models/fields/__init__.py:566 +msgid "Comma-separated integers" +msgstr "Celá čísla oddělená čárkou" + +#: db/models/fields/__init__.py:580 +msgid "Date (without time)" +msgstr "Datum (bez času)" + +#: db/models/fields/__init__.py:584 msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Vložte platné datum ve formátu RRRR-MM-DD." - -#: db/models/fields/__init__.py:483 +msgstr "Vložte platné datum ve tvaru RRRR-MM-DD." + +#: db/models/fields/__init__.py:585 #, python-format msgid "Invalid date: %s" msgstr "Neplatné datum: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:666 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." -msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM[:ss[.uuuuuu]]." - -#: db/models/fields/__init__.py:601 +msgstr "Vložte platné datum a čas ve tvaru RRRR-MM-DD HH:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:668 +msgid "Date (with time)" +msgstr "Datum (s časem)" + +#: db/models/fields/__init__.py:734 msgid "This value must be a decimal number." -msgstr "Tato hodnota musí být desetinné číslo." - -#: db/models/fields/__init__.py:686 +msgstr "Hodnota musí být desetinné číslo." + +#: db/models/fields/__init__.py:736 +msgid "Decimal number" +msgstr "Desetinné číslo" + +#: db/models/fields/__init__.py:791 +msgid "E-mail address" +msgstr "E-mailová adresa" + +#: db/models/fields/__init__.py:798 +#: db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Cesta k souboru" + +#: db/models/fields/__init__.py:821 msgid "This value must be a float." -msgstr "Tato hodnota musí být desetinné číslo." - -#: db/models/fields/__init__.py:746 +msgstr "Hodnota musí být desetinné číslo." + +#: db/models/fields/__init__.py:823 +msgid "Floating point number" +msgstr "Číslo s pohyblivou řádovou čárkou" + +#: db/models/fields/__init__.py:882 +msgid "Big (8 byte) integer" +msgstr "Velké číslo (8 bajtů)" + +#: db/models/fields/__init__.py:911 msgid "This value must be either None, True or False." -msgstr "Tato hodnota musí být buď Nic (None), Ano (True) nebo Ne (False)." - -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +msgstr "Hodnota musí být buď Nic (None), Ano (True) nebo Ne (False)." + +#: db/models/fields/__init__.py:913 +msgid "Boolean (Either True, False or None)" +msgstr "Pravdivost (buď Ano (True), Ne (False) nebo Nic (None))" + +#: db/models/fields/__init__.py:1004 +msgid "Text" +msgstr "Text" + +#: db/models/fields/__init__.py:1020 +msgid "Time" +msgstr "Čas" + +#: db/models/fields/__init__.py:1024 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." -msgstr "Vložte platný čas ve formátu HH:MM[:ss[.uuuuuu]]" - -#: db/models/fields/related.py:792 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Výběr více než jedné položky je možný přidržením klávesy \"Control\" (nebo " -"\"Command\" na Macu)." - -#: db/models/fields/related.py:870 +msgstr "Vložte platný čas ve tvaru HH:MM[:ss[.uuuuuu]]" + +#: db/models/fields/__init__.py:1108 +msgid "XML text" +msgstr "XML text" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Položka typu %(model)s s primárním klíčem %(pk)r neexistuje." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Cizí klíč (typ určen pomocí souvisejícího pole)" + +#: db/models/fields/related.py:923 +msgid "One-to-one relationship" +msgstr "Vazba jedna-jedna" + +#: db/models/fields/related.py:983 +msgid "Many-to-many relationship" +msgstr "Vazba mnoho-mnoho" + +#: db/models/fields/related.py:1003 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Výběr více než jedné položky je možný přidržením klávesy \"Control\" (nebo \"Command\" na Macu)." + +#: db/models/fields/related.py:1064 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Vložte platné ID objektu %(self)s. Hodnota %(value)r je neplatná." -msgstr[1] "Vložte platné ID objektu %(self)s. Hodnoty %(value)r jsou neplatné." -msgstr[2] "Vložte platné ID objektu %(self)s. Hodnoty %(value)r jsou neplatné." - -#: forms/fields.py:54 +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Vložte platné ID položky %(self)s. Hodnota %(value)r je neplatná." +msgstr[1] "Vložte platné ID položky %(self)s. Hodnoty %(value)r jsou neplatné." +msgstr[2] "Vložte platné ID položky %(self)s. Hodnoty %(value)r jsou neplatné." + +#: forms/fields.py:65 msgid "This field is required." -msgstr "Toto pole je povinné." - -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Vložte platnou hodnotu." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Délka této hodnoty má být nejvýše %(max)d znaků, ale nyní je %(length)d." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Délka této hodnoty má být nejméně %(min)d znaků, ale nyní je %(length)d." - -#: forms/fields.py:166 +msgstr "Pole je povinné." + +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Vložte celé číslo." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Tato hodnota musí být menší nebo rovna %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Tato hodnota musí být větší nebo rovna %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 +#: forms/fields.py:256 msgid "Enter a number." msgstr "Vložte číslo." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." -msgstr "Tato hodnota nesmí celkem mít více než %s cifer." - -#: forms/fields.py:228 +msgstr "Hodnota nesmí celkem mít více než %s cifer." + +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." -msgstr "Tato hodnota nesmí mít za desetinnou čárkou více než %s cifer." - -#: forms/fields.py:229 +msgstr "Hodnota nesmí mít za desetinnou čárkou více než %s cifer." + +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Tato hodnota nesmí mít před desetinnou čárkou více než %s cifer." - -#: forms/fields.py:288 forms/fields.py:863 +msgstr "Hodnota nesmí mít před desetinnou čárkou více než %s cifer." + +#: forms/fields.py:323 +#: forms/fields.py:838 msgid "Enter a valid date." msgstr "Vložte platné datum." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 +#: forms/fields.py:839 msgid "Enter a valid time." msgstr "Vložte platný čas." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Vložte platné datum a čas." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." -msgstr "" -"Soubor nebyl odeslán. Zkontrolujte parametr \"encoding type\" formuláře." - -#: forms/fields.py:448 +msgstr "Soubor nebyl odeslán. Zkontrolujte parametr \"encoding type\" formuláře." + +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Žádný soubor nebyl odeslán." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Odeslaný soubor je prázdný." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format -msgid "" -"Ensure this filename has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Délka názvu souboru má být nejvýše %(max)d znaků, ale nyní je %(length)d." - -#: forms/fields.py:483 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Nahrajte platný obrázek. Odeslaný soubor buď nebyl obrázek nebo byl poškozen." - -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Vložte platnou adresu URL." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Tato adresa URL je zřejmě neplatný odkaz." - -#: forms/fields.py:625 forms/fields.py:703 +msgid "Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "Délka názvu souboru má být nejvýše %(max)d znaků, ale nyní je %(length)d." + +#: forms/fields.py:473 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Nahrajte platný obrázek. Odeslaný soubor buď nebyl obrázek nebo byl poškozen." + +#: forms/fields.py:596 +#: forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Vyberte platnou možnost, \"%(value)s\" není k dispozici." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:988 +#: forms/fields.py:672 +#: forms/fields.py:734 +#: forms/models.py:995 msgid "Enter a list of values." msgstr "Vložte seznam hodnot." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Vložte platnou adresu typu IPv4." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Vložte platný identifikátor složený pouze z písmen, čísel, podtržítek a " -"pomlček." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 +#: forms/formsets.py:300 msgid "Order" msgstr "Pořadí" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "" -"Pole %(field_name)s musí být unikátní testem %(lookup)s pole %(date_field)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "" -"Položka %(model_name)s s touto hodnotou v poli %(field_label)s již existuje." - -#: forms/models.py:581 +#: forms/models.py:556 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Opravte duplicitní data v poli %(field)s." -#: forms/models.py:585 +#: forms/models.py:560 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Opravte duplicitní data v poli %(field)s, které musí být unikátní." -#: forms/models.py:591 +#: forms/models.py:566 #, python-format -msgid "" -"Please correct the duplicate data for %(field_name)s which must be unique " -"for the %(lookup)s in %(date_field)s." -msgstr "" -"Opravte duplicitní data v poli %(field_name)s, které musí být unikátní " -"testem %(lookup)s pole %(date_field)s." - -#: forms/models.py:599 +msgid "Please correct the duplicate data for %(field_name)s which must be unique for the %(lookup)s in %(date_field)s." +msgstr "Opravte duplicitní data v poli %(field_name)s, které musí být unikátní testem %(lookup)s pole %(date_field)s." + +#: forms/models.py:574 msgid "Please correct the duplicate values below." msgstr "Odstraňte duplicitní hodnoty níže." -#: forms/models.py:852 +#: forms/models.py:848 msgid "The inline foreign key did not match the parent instance primary key." -msgstr "" -"Cizí klíč typu inline neodpovídá primárnímu klíči v rodičovské položce." - -#: forms/models.py:915 +msgstr "Cizí klíč typu inline neodpovídá primárnímu klíči v rodičovské položce." + +#: forms/models.py:914 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Vyberte platnou možnost. Tato není k dispozici." -#: forms/models.py:989 +#: forms/models.py:996 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Vyberte platnou možnost, \"%s\" není k dispozici." -#: forms/models.py:991 +#: forms/models.py:998 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "Hodnota \"%s\" není platný primární klíč." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "ano, ne, možná" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" @@ -4127,17 +4687,17 @@ msgstr[1] "%(size)d bajty" msgstr[2] "%(size)d bajtů" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4230,23 +4790,28 @@ msgid "February" msgstr "únor" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "March" msgstr "březen" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "April" msgstr "duben" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "May" msgstr "květen" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "June" msgstr "červen" -#: utils/dates.py:19 utils/dates.py:31 +#: utils/dates.py:19 +#: utils/dates.py:31 msgid "July" msgstr "červenec" @@ -4346,7 +4911,7 @@ msgid "Dec." msgstr "prosinec" -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "nebo" @@ -4406,33 +4971,38 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j. n. Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. n. Y H:i" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." -msgstr "Záznam typu %(verbose_name)s byl úspěšně vytvořen." - -#: views/generic/create_update.py:156 +msgstr "Položka typu %(verbose_name)s byla úspěšně vytvořena." + +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." -msgstr "Záznam typu %(verbose_name)s byl úspěšně aktualizován." - -#: views/generic/create_update.py:198 +msgstr "Položka typu %(verbose_name)s byla úspěšně aktualizována." + +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." -msgstr "Záznam typu %(verbose_name)s byl smazán." +msgstr "Položka typu %(verbose_name)s byla odstraněna." + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cs/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/cs/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cs/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/cs/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/cs/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -1,118 +1,120 @@ # Translation of djangojs.po to Czech # Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the DJANGO package. -# Radek Svarz , 2005. +# Radek Svarz , 2005, +# Vlada Macek , 2010. # msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-20 12:52+0200\n" +"POT-Creation-Date: 2010-04-07 13:17+0200\n" +"PO-Revision-Date: 2010-04-07 13:33+0100\n" +"Last-Translator: Vlada Macek \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==1 ? 0 : n>1 && n<5 ? 1 : 2;\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" -msgstr "Dostupná %s" +msgstr "Dostupné položky: %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Vybrat vše" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Přidat" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Odebrat" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" -msgstr "Vybraná %s" +msgstr "Vybrané položky: %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Vyberte si a klikněte " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" -msgstr "Vymazat vše" +msgstr "Odebrat vše" #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 -msgid "" -"January February March April May June July August September October November " -"December" -msgstr "" -"Leden Únor Březen Duben Květen Červen Červenec Srpen Září Říjen Listopad " -"Prosinec" +msgid "January February March April May June July August September October November December" +msgstr "leden únor březen duben květen červen červenec srpen září říjen listopad prosinec" #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" -msgstr "N P U S C P S" +msgstr "n p ú s č p s" + +#: contrib/admin/media/js/collapse.js:9 +#: contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Zobrazit" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Skrýt" #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Ukázat" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Skrýt" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:50 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Now" msgstr "Nyní" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:54 msgid "Clock" msgstr "Hodiny" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Choose a time" msgstr "Vyberte čas" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "Midnight" msgstr "Půlnoc" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "6 a.m." -msgstr "6 ráno" +msgstr "6h ráno" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 msgid "Noon" msgstr "Poledne" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:92 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Storno" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Dnes" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Kalendář" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Včera" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Zítra" + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cs/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cs/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/cs/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'G:i:s' +DATETIME_FORMAT = 'j. F Y G:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y G:i:s' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' + '%Y-%m-%d', '%y-%m-%d', # '2006-10-25', '06-10-25' + # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%d.%m.%Y %H:%M', # '25.10.2006 14:30' + '%d.%m.%Y', # '25.10.2006' + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cy/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/cy/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/cy/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/da/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/da/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/da/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/da/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/da/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -6,8 +6,8 @@ msgstr "" "Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-26 21:43+0200\n" -"PO-Revision-Date: 2008-11-07 20:41+0200\n" +"POT-Creation-Date: 2010-04-26 15:48+0200\n" +"PO-Revision-Date: 2010-02-20 20:41+0200\n" "Last-Translator: Finn Gruwier Larsen\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -19,215 +19,235 @@ msgstr "Arabisk" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Bulgarsk" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "Bengalsk" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Bulgarsk" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "Catalansk" +msgid "Bosnian" +msgstr "Bosnisk" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Catalansk" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "Tjekkisk" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "Walisisk" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "Dansk" +msgid "Welsh" +msgstr "Walisisk" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dansk" + +#: conf/global_settings.py:52 msgid "German" msgstr "Tysk" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Græsk" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Engelsk" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "Spansk" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estisk" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "Argentisk spansk" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Estisk" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "Baskisk" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "Persisk" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "Finsk" -#: conf/global_settings.py:60 -msgid "French" -msgstr "Fransk" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "Irsk" +msgid "French" +msgstr "Fransk" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "Galicisk" +msgid "Frisian" +msgstr "Frisisk" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Ungarsk" +msgid "Irish" +msgstr "Irsk" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "Galicisk" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "Hebræisk" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "Kroatisk" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Islandsk" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Italiensk" +msgid "Hungarian" +msgstr "Ungarsk" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Islandsk" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Italiensk" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "Japansk" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "Georgisk" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "Koreansk" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Lettisk" - #: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "Litauisk" +msgid "Korean" +msgstr "Koreansk" #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "Makedonsk" +msgid "Lithuanian" +msgstr "Litauisk" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "Hollandsk" +msgid "Latvian" +msgstr "Lettisk" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Norsk" +msgid "Macedonian" +msgstr "Makedonsk" #: conf/global_settings.py:79 +msgid "Dutch" +msgstr "Hollandsk" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "Norsk" + +#: conf/global_settings.py:81 msgid "Polish" msgstr "Polsk" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "Portugisisk" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "Brasiliansk portugisisk" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "Rumænsk" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "Russisk" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "Slovakisk" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "Slovensk" -#: conf/global_settings.py:86 +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "Albansk" + +#: conf/global_settings.py:89 msgid "Serbian" msgstr "Serbisk" -#: conf/global_settings.py:87 +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "Serbisk (latin)" + +#: conf/global_settings.py:91 msgid "Swedish" msgstr "Svensk" -#: conf/global_settings.py:88 +#: conf/global_settings.py:92 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "Thai" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "Tyrkisk" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "Ukrainsk" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "Forenklet kinesisk" -#: conf/global_settings.py:94 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "Traditionelt kinesisk" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "%(count)d %(items)s blev slettet." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 msgid "Are you sure?" msgstr "Er du sikker?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Slet valgte %(verbose_name_plural)s" @@ -266,19 +286,19 @@ msgid "This year" msgstr "Dette år" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Ja" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Nej" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Ukendt" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Handling" @@ -310,104 +330,125 @@ msgid "log entries" msgstr "logmeddelelser" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "Ingen" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "Ændrede %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:562 msgid "and" msgstr "og" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Tilføjede %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Ændrede %(list)s for %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Slettede %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Ingen felter ændret." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" blev tilføjet i databasen." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "Du kan redigere det igen herunder." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Du kan tilføje endnu en %s herunder." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" blev ændret." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:690 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" blev tilføjet. Du kan redigere det igen herunder." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "Ingen handling valgt." + +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "Tilføj %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Der findes ikke et %(name)s-objekt med primærnøgle %(key)r." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" msgstr "Ret %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:978 msgid "Database error" msgstr "databasefejl" -#: contrib/admin/options.py:941 -#, python-format +#: contrib/admin/options.py:1014 +#, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s blev ændret." msgstr[1] "%(count)s %(name)s blev ændret." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s valgt" +msgstr[1] "Alle %(total_count)s valgt" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 af %(cnt)s valgt" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" blev slettet." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "Ændringshistorik: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -415,11 +456,11 @@ "Indtast venligst et korrekt brugernavn og adgangskode. Bemærk, at begge " "felter er versalfølsomme." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Log venligst ind igen, da din session er udløbet." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -427,62 +468,52 @@ "Det ser ud til din browser ikke er indstillet til at acceptere cookies. Slå " "venligst cookies til, genindlæs denne side og prøv igen." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Brugernavne kan ikke indeholde tegnet '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Din e-mail-adresse er ikke dit brugernavn. Prøv '%s' i stedet." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Website-administration" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Log ind" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Administration af %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Et eller flere %(fieldname)s i %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Et eller flere %(fieldname)s i %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Dato:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Tid:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Nuværende:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Ret:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Slå op" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Tilføj endnu en" @@ -497,17 +528,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -542,7 +573,20 @@ #: contrib/admin/templates/admin/actions.html:4 msgid "Go" -msgstr "Kør" +msgstr "Udfør" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "" #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 @@ -550,28 +594,28 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Velkommen," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentation" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Skift adgangskode" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Log ud" @@ -583,41 +627,42 @@ msgid "Django administration" msgstr "Django administration" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Tilføj" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Historik" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Se på website" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Ret venligst fejlen herunder." msgstr[1] "Ret venligst fejlene herunder." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Tilføj %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtrer" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Slet" @@ -657,17 +702,17 @@ "your account doesn't have permission to delete the following types of " "objects:" msgstr "" -"Hvis du sletter %(object_name)s, vil du også slette relaterede objekter, " -"men din konto har ikke rettigheder til at slette følgende objekttyper:" +"Hvis du sletter %(object_name)s, vil du også slette relaterede objekter, men " +"din konto har ikke rettigheder til at slette følgende objekttyper:" #: contrib/admin/templates/admin/delete_selected_confirmation.html:22 #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" -"Er du sikker på du vil slette de valgte %(object_name)s-objekter? Alle " -"de følgende relaterede objekter vil blive slettet:" +"Er du sikker på du vil slette de valgte %(object_name)s-objekter? Alle de " +"følgende relaterede objekter vil blive slettet:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -730,15 +775,9 @@ msgstr "Bruger" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Funktion" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j. F Y H:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -784,7 +823,7 @@ msgid "Save and continue editing" msgstr "Gem og fortsæt med at redigere" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -792,33 +831,39 @@ "Indtast først et brugernavn og en adgangskode. Derefter får du yderligere " "redigeringsmuligheder." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Brugernavn" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Adgangskode" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Adgangskode (igen)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Indtast den samme adgangskode som ovenfor for verifikation." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Indtast en ny adgangskode for brugeren %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Adgangskode" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Adgangskode (igen)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Indtast den samme adgangskode som ovenfor for verifikation." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Tilføj endnu en %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Fjern" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Slet?" @@ -832,9 +877,9 @@ msgstr "Log ind igen" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Skift adgangskode" @@ -847,7 +892,7 @@ msgid "Your password was changed." msgstr "Din adgangskode blev ændret." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -856,21 +901,17 @@ "din nye adgangskode to gange, så vi kan være sikre på, at den er indtastet " "korrekt." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Gammel adgangskode:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Ny adgangskode:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Bekræft ny adgangskode:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Gammel adgangskode" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Ny adgangskode" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Skift min adgangskode" @@ -909,6 +950,14 @@ "Indtast venligst din nye adgangskode to gange, så vi kan være sikre på, at " "den er indtastet korrekt." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Ny adgangskode:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Bekræft ny adgangskode:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Adgangskoden blev ikke nulstillet" @@ -978,7 +1027,7 @@ msgid "Reset my password" msgstr "Nulstil min adgangskode" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Alle datoer" @@ -992,11 +1041,11 @@ msgid "Select %s to change" msgstr "Vælg %s, der skal ændres" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "website" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "skabelon" @@ -1056,89 +1105,7 @@ msgid "Fields on %s objects" msgstr "Felter på %s-objekter" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Heltal" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Boolsk (enten True eller False)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Streng (op til %(max_length)s)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Kommaseparerede heltal" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Dato (uden tid)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Dato (med tid)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Decimaltal" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "E-mail-adresse" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Sti" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Flydende-komma-tal" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "IP-adresse" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Boolsk (True, False eller None)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Relation til forældermodel" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Telefonnummer" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Tekst" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Tid" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Stat (i USA, to store bogstaver)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "XML-tekst" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ser ikke ud til at være et urlpattern-objekt" @@ -1162,15 +1129,12 @@ "your computer is \"internal\").

          \n" msgstr "" "\n" -"

          For at installere bookmarklets, træk linket til din " -"bogmærkelinje\n" -" eller højreklik på linket og tilføj det til dine bogmærker. Du kan nu\n" -"markere bookmarkletten fra enhver side på websitet. Bemærk, at nogle af " -"disse \n" -"bookmarkletter kræver, at du ser på websitet fra en computer der opfattes \n" -"som \"intern\" (tal med din systemadministrator, hvis du ikke er sikker på " -"om\n" -"din computer er \"intern\").

          \n" +"

          For at installere bookmarklets, træk linket til din\n" +"bogmærkelinje eller højreklik på linket og tilføj det til dine bogmærker.\n" +"Du kan nu markere bookmarkletten fra enhver side på websitet.\n" +"Bemærk, at nogle af disse bookmarkletter kræver, at du ser på websitet fra\n" +"en computer der opfattes som \"intern\" (tal med din systemadministrator,\n" +"hvis du ikke er sikker på om din computer er \"intern\").

          \n" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 msgid "Documentation for this page" @@ -1214,66 +1178,62 @@ msgid "As above, but opens the admin page in a new window." msgstr "Som ovenfor, men åbner administrationssiden i et nyt vindue." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Personlig information" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Rettigheder" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Vigtige datoer" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupper" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Tilføj bruger" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Adgangskoden blev ændret." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Skift adgangskode: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Brugernavn" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "Påkrævet. Højst 30 tegn. Kun bogstaver og cifre samt @/./+/-/_" + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." msgstr "" -"Påkrævet. Højst 30 tegn, kun alfanumeriske tegn (bogstaver og cifre samt " -"understreg)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Dette felt må kun indeholde bogstaver og cifre samt understreg." +"Dette felt må kun indeholde bogstaver og cifre samt disse tegn: @/./+/-/_" #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Bekræftelse af adgangskode" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "En bruger med dette brugernavn findes allerede." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "De to adgangskoder var ikke identiske." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Denne konto er inaktiv." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1281,11 +1241,11 @@ "Din browser ser ud til ikke at have cookies aktiveret. Cookies er påkrævet " "for at kunne logge ind." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-mail" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1293,73 +1253,71 @@ "Den e-mail-adresse er ikke tilknyttet en konto. Er du sikker på at du har " "registreret dig?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Adgangskode nulstillet på %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Ny adgangskode" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Bekræftelse af ny adgangskode" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Gammel adgangskode" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "Din gamle adgangskode blev ikke indtastet korrekt. Indtast den venligst igen." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "navn" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "kodenavn" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "rettighed" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "rettigheder" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "gruppe" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupper" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "brugernavn" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Påkrævet. Højst 30 tegn. Kun bogstaver og cifre samt disse tegn: @/./+/-/_" + +#: contrib/auth/models.py:197 msgid "first name" msgstr "fornavn" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "efternavn" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "e-mail-adresse" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "adgangskode" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1367,19 +1325,19 @@ "Brug '[algo]$[salt]$[hexdigest]' eller brug formularen " "til skift af adgangskode." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "admin-status" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Bestemmer om brugeren kan logge ind på dette administrationswebsite." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "aktiv" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1387,26 +1345,26 @@ "Bestemmer om brugeren skal behandles som aktiv. Fravælg dette frem for at " "slette en konto." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "superbrugerstatus" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Bestemmer at denne bruger har alle rettigheder uden at tildele dem eksplicit." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "sidst logget ind" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "dato for registrering" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1414,39 +1372,77 @@ "Udover de rettigheder, der manuelt er tildelt brugeren, vil denne også få " "alle rettigheder, der er tildelt hver gruppe, brugeren er medlem af." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "Rettigheder" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "bruger" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "brugere" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "meddelelse" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Logget ud" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Indtast en gyldig e-mail-adresse." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Indhold" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadata" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "Markeret" +msgstr[1] "Markeret" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Marker valgte kommentarer" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "Godkendt" +msgstr[1] "Godkendt" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Godkend valgte kommentarer" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "fjernet" +msgstr[1] "fjernet" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Fjern valgte kommentarer" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 kommentar blev %(action)s" +msgstr[1] "%(count)s kommentarer blev %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1458,7 +1454,6 @@ msgstr "Seneste kommentarer på %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Navn" @@ -1466,26 +1461,30 @@ msgid "Email address" msgstr "E-mail-adresse" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Kommentar" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "Var din mund! Ordet %s er ikke tilladt her." msgstr[1] "Var din mund! Ordene %s er ikke tilladt her." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Hvis du indtaster noget i dette felt, vil din kommentar blive betragtet som " "spam." -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "indholdstype" @@ -1514,6 +1513,10 @@ msgid "date/time submitted" msgstr "dato/tidspunkt for oprettelse" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "IP-adresse" + #: contrib/comments/models.py:61 msgid "is public" msgstr "er offentlig" @@ -1596,7 +1599,6 @@ msgstr "Vil du godkende denne kommentar?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Godkend" @@ -1621,11 +1623,6 @@ msgid "Really remove this comment?" msgstr "Skal kommentaren fjernes?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Fjern" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Tak for fjernelsen" @@ -1644,7 +1641,7 @@ #: contrib/comments/templates/comments/flagged.html:4 msgid "Thanks for flagging" -msgstr "Tak for flagningen" +msgstr "Tak for markeringen" #: contrib/comments/templates/comments/form.html:17 #: contrib/comments/templates/comments/preview.html:32 @@ -1656,39 +1653,6 @@ msgid "Preview" msgstr "Forhåndsvis" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Moderationskø" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Ingen kommentarer at moderere" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "E-mail" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Autenticeret?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP-adresse" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Indsendt d." - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "ja" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "nej" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Tak for kommenteringen" @@ -1716,11 +1680,11 @@ msgid "or make changes" msgstr "eller gennemfør ændringer" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "klassenavn i Python-model" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "indholdstyper" @@ -1785,7 +1749,7 @@ msgid "flat pages" msgstr "flade sider" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1793,6 +1757,38 @@ "Tiden er udløbet - vi beklager. Vær venlig at fortsætte med at udfylde " "formularen på denne side." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Punkt" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Linjesegment" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Polygon" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Multipunkt" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Multilinjesegment" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Multipolygon" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Geometrisamling" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Ingen værdi givet for geometri." @@ -1810,6 +1806,7 @@ "An error occurred when transforming the geometry to the SRID of the geometry " "form field." msgstr "" +"Der opstod en fejl ved transformation af geometrien til formularfeltets SRID" #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1896,25 +1893,25 @@ msgid "yesterday" msgstr "i går" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Indtast et postnummer i formatet NNNN eller ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "I dette felt skal kun indtastes cifre." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Dette felt kræver 7 eller 8 cifre." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Indtast en gyldig CUIT i format XX-XXXXXXXX-X eller XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Ugyldig CUIT." @@ -1954,8 +1951,8 @@ msgid "Vienna" msgstr "Vienna" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Indtast et postnummer i formatet XXXX." @@ -1963,45 +1960,45 @@ msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." msgstr "Indtast et gyldigt østrigsk sygesikringsnummer i format XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Indtast et firecifret postnummer." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Indtast et postnummer i formatet XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Telefinnumre skal være i formatet XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." msgstr "Vælg en gyldig brasiliansk provins. Denne provins er ikke gyldig." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Ugyldigt CPF-nummer." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Dette felt kræver mindst 11 og højst 14 tegn." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Ugyldigt CNPJ-nummer." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "dette felt kræver mindst 14 cifre." -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Indtast et postnummer i formatet XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "Indtast et gyldigt kanadisk sygesikringsnummer i formatet XXX-XXX-XXX." @@ -2109,7 +2106,7 @@ msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2117,15 +2114,15 @@ "Indtast et svejtsisk identitets- eller pasnr. i format X1234567<0 eller " "1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Indtast en gyldig chilensk RUT" -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Indtast en gyldig chilensk RUT. Formatet er XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Den chilenske RUT er ugyldig." @@ -2185,23 +2182,23 @@ msgid "Moravian-Silesian Region" msgstr "Moravien-Silesien" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Indtast et postnr. i format XXXXX eller XXX XX." -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Indtast et fødselsnr. i formatet XXXXXX/XXXX or XXXXXXXXXX." - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Ugyldig værdi for køn. Gyldige værdier er 'f' og 'm'." +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Indtast et fødselsnr. i formatet XXXXXX/XXXX or XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Ugyldig værdi for køn. Gyldige værdier er 'f' og 'm'." + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Indtast et gyldigt fødselsnummer." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Indtast et IC-nummer." @@ -2269,12 +2266,12 @@ msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Indtast et postnummer i formatet XXXXX" -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2548,75 +2545,507 @@ msgid "Valencian Community" msgstr "Valencian Community" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Indtast et gyldigt postnr. i området 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." msgstr "" -"Indtast et gyldigt telefonr. i et af disse formater: 6XXXXXXXX, 8XXXXXXXX, " +"Indtast et gyldigt telefonnr. i et af disse formater: 6XXXXXXXX, 8XXXXXXXX, " "9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Indtast venligst gyldig NIF, NIE eller CIF." -#: contrib/localflavor/es/forms.py:67 -msgid "Please enter a valid NIF or NIE." -msgstr "Indtast venligst gyldig NIF eller NIE." - #: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "Indtast venligst gyldig NIF eller NIE." + +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Ugyldig kontrolsum for NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Ugyldig kontrolsum for NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Ugyldig kontrolsum for CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Indtast venligst et gyldigt bankkontonr. i formatet XXX-XXXX-XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Ugyldig kontrolsum for bankkontonr." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Indtast et gyldigt finsk sygesikringsnummer." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonnumre skal være i formatet 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Indtast et gyldigt postnummer" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Indtast et gyldigt telefonnummer" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Indtast et gyldigt bilnummer" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Indtast et gyldigt NIK/KTP-nummer." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps Consulate" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Federal Government" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Shigo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrol" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Indtast et postnr. i formatet XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Indtast et gyldigt islandsk identifikationsnr. Formatet er XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Det islandske identifikationsnummer er ikke gyldigt." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Indtast et gyldigt postnummer." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Indtast et gyldigt sygesikringsnummer." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Indtast et gyldigt momsnummer." @@ -2812,6 +3241,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Indtast et gyldigt kuwaitisk personnummer." + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2940,15 +3373,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Indtast et gyldigt postnummer" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Indtast et gyldigt telefonnummer" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Indtast et gyldigt SoFi-nummer" @@ -3000,15 +3429,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Indtast et gyldigt norsk sygesikringsnummer." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Dette felt kræver 8 cifre." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Dette felt kræver 11 cifre." @@ -3105,6 +3534,14 @@ msgid "West Pomerania" msgstr "West Pomerania" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Indtast et postnummer i formatet XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Indtast et gyldigt CIF." @@ -3125,6 +3562,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Indtast et gyldigt postnummer i formatet XXXXXX" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Indtast et gyldigt svensk organisationsnummer." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Indtast et gyldigt svensk personnummer." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Koordinationsnumre er ikke tilladt." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Indtast et svensk postnummer i formatet XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banska Bystrica" @@ -3211,7 +3748,7 @@ #: contrib/localflavor/sk/sk_districts.py:29 msgid "Komarno" -msgstr "mar" +msgstr "Komarno" #: contrib/localflavor/sk/sk_districts.py:30 msgid "Kosice I" @@ -3475,7 +4012,7 @@ #: contrib/localflavor/uk/forms.py:21 msgid "Enter a valid postcode." -msgstr "Indtast et gyldigt filnavn." +msgstr "Indtast et gyldigt postnummer." #: contrib/localflavor/uk/uk_regions.py:11 msgid "Bedfordshire" @@ -3757,19 +4294,44 @@ msgid "Wales" msgstr "Walisisk" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Indtast et postnr. i format XXXXX eller XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefonnumre skal være i formatet XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Indtast et gyldigt U. S sygesikringsnummer i format XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Indtast en amerikansk stat." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stat (i USA, to store bogstaver)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefonnummer" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Indtast et gyldigt CI-nummer i formatet X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Indtast et gyldigt CI-nummer." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Indtast et gyldigt sydafrikansk sygesikringsnummer." -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Indtast et gyldigt sydafrikansk postnummer." @@ -3809,6 +4371,10 @@ msgid "Western Cape" msgstr "Western Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "doven meddelelse" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "rediriger fra" @@ -3873,58 +4439,218 @@ msgid "sites" msgstr "websites" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Denne værdi skal et heltal." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Denne værdi skal være enten True eller False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Indtast en gyldig værdi." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Indtast en gyldig URL." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Denne URL henviser ikke til en gyldig side eller fil." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Dette felt må kun indeholde bogstaver, cifre, understreger og bindestreger." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Indtast en gyldig IPv4-adresse." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Indtast kun cifre adskilt af kommaer." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Denne værdi skal være %(limit_value)s (den er %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Denne værdi skal være mindre end eller lig %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Denne værdi skal være større end eller lig %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Denne værdi skal mindst indeholde %(limit_value)d tegn (den indeholder %" +"(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Denne værdi må maksimalt indeholde %(limit_value)d tegn (den har %" +"(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s skal være unik for %(date_field)s %(lookup)s." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s med dette %(field_label)s eksisterer allerede." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Værdien %r er ikke et gyldigt valg." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Dette felt kan ikke være null." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Indtast kun cifre adskilt af kommaer." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Dette felt kan ikke være tomt." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Felt af type: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Heltal" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Denne værdi skal et heltal." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Denne værdi skal være enten True eller False." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Boolsk (enten True eller False)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Streng (op til %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Kommaseparerede heltal" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Dato (uden tid)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Indtast en gyldig dato i formatet ÅÅÅÅ-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Ugyldig dato: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Indtast gyldig dato og tid i formatet ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Dato (med tid)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Denne værdi skal et decimaltal." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Decimaltal" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "E-mail-adresse" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Sti" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Denne værdi skal være et kommatal." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Flydende-komma-tal" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Stort heltal (8 byte)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Denne værdi skal være None, True eller False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Boolsk (True, False eller None)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Tekst" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Tid" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Indtast en gyldig tid i formatet TT:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "XML-tekst" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "En model %(model)s med primærnøgle %(pk)r eksisterer ikke." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Fremmednøgle (type bestemt af relateret felt)" + +#: db/models/fields/related.py:923 +msgid "One-to-one relationship" +msgstr "En-til-en-relation" + +#: db/models/fields/related.py:983 +msgid "Many-to-many relationship" +msgstr "Mange-til-mange-relation" + +#: db/models/fields/related.py:1003 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Hold \"Ctrl\" (eller \"Æbletasten\" på Mac) nede for at vælge mere end en." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1064 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3934,89 +4660,64 @@ msgstr[1] "" "Indtast venligst gyldige %(self)s-ID'er. Værdierne %(value)r er ugyldige." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Dette felt er påkrævet." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Indtast en gyldig værdi." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Denne værdi må maksimalt indeholde %(max)d tegn (den har %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Denne værdi skal mindst indeholde %(min)d tegn (den indeholder %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Indtast et heltal." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Denne værdi skal være mindre end eller lig %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Denne værdi skal være større end eller lig %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Indtast et tal." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Der må maksimalt være %s cifre i alt." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Der må højst være %s decimalpladser." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Der må maksimalt være %s cifre før decimaltegnet." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Indtast en gyldig dato." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Indtast en gyldig tid." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Indtast gyldig dato/tid." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Ingen fil blev indsendt. Kontroller kodningstypen i formularen." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Ingen fil blev indsendt." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Den indsendte fil er tom." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "Denne værdi må maksimalt indeholde %(max)d tegn (den har %(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4024,116 +4725,88 @@ "Indsend en billedfil. Filen, du indsendte, var enten ikke et billede eller " "en defekt billedfil." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Indtast en gyldig URL." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Denne URL henviser ikke til en gyldig side eller fil." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Marker en gyldigt valgmulighed; '%(value)s' er ikke en af de tilgængelige " "valgmuligheder." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:995 msgid "Enter a list of values." msgstr "Indtast en liste af værdier." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Indtast en gyldig IPv4-adresse." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Dette felt må kun indeholde bogstaver, cifre, understreger og bindestreger." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Rækkefølge" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s skal være unik for %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s med dette %(field_label)s eksisterer allerede." - -#: forms/models.py:594 +#: forms/models.py:556 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Ret venligst duplikerede data for %(field)s." -#: forms/models.py:598 +#: forms/models.py:560 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Ret venligst de duplikerede data for %(field)s, som skal være unik." -#: forms/models.py:604 +#: forms/models.py:566 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -"Ret venligst de duplikerede data for %(field_name)s, som skal være unik " -"for %(lookup)s i %(date_field)s." - -#: forms/models.py:612 +"Ret venligst de duplikerede data for %(field_name)s, som skal være unik for %" +"(lookup)s i %(date_field)s." + +#: forms/models.py:574 msgid "Please correct the duplicate values below." msgstr "Ret venligst de duplikerede data herunder." -#: forms/models.py:867 +#: forms/models.py:848 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "Den indlejrede fremmednøgle passede ikke med forælderinstansens primærnøgle." -#: forms/models.py:930 +#: forms/models.py:914 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" "Marker en gyldig valgmulighed. Det valg, du har foretaget, er ikke blandt de " "tilgængelige valgmuligheder." -#: forms/models.py:1004 +#: forms/models.py:996 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "" "Marker et gyldigt valg. %s er ikke en af de tilgængelige valgmuligheder." -#: forms/models.py:1006 +#: forms/models.py:998 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" er ikke en gyldig værdi for en primærnøgle." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "ja,nej,måske" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4342,7 +5015,7 @@ msgid "Dec." msgstr "Dec." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "eller" @@ -4396,34 +5069,37 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j. F Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. F Y H:i" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s blev oprettet." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s blev opdateret." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s blev slettet." - diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/da/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/da/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/da/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/da/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/da/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-09-09 20:20+0200\n" +"POT-Creation-Date: 2010-04-26 15:49+0200\n" "PO-Revision-Date: 2008-08-13 22:00+0200\n" "Last-Translator: Finn Gruwier Larsen\n" "Language-Team: \n" @@ -14,36 +14,43 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "Tilgængelige %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Vælg alle" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Tilføj" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Fjern" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "Valgte %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Foretag dit/dine valg og klik " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Fravælg alle" +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "%(sel)s af %(cnt)s valgt" +msgstr[1] "%(sel)s af %(cnt)s valgt" + #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 msgid "" @@ -57,62 +64,63 @@ msgid "S M T W T F S" msgstr "S M T O T F L" +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Vis" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Skjul" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Vis" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Skjul" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Nu" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Ur" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Vælg et tidspunkt" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Midnat" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6 morgen" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Middag" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Annuller" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "I dag" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Kalender" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "I går" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "I morgen" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/da/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/da/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/da/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j. F Y H:i' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y H:i' +FIRST_DAY_OF_WEEK = 1 +DATE_INPUT_FORMATS = ( + '%d.%m.%Y', # '25.10.2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%d.%m.%Y %H:%M', # '25.10.2006 14:30' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/de/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/de/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/de/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/de/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/de/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-23 18:58+0200\n" -"PO-Revision-Date: 2008-08-28 22:58+0100\n" +"POT-Creation-Date: 2010-05-05 00:38+0200\n" +"PO-Revision-Date: 2010-04-26 13:53+0100\n" "Last-Translator: Jannis Leidel \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -24,215 +24,251 @@ msgstr "Arabisch" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "Bengali" +msgid "Bulgarian" +msgstr "Bulgarisch" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Bulgarisch" +msgid "Bengali" +msgstr "Bengali" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "Bosnisch" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "Katalanisch" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "Tschechisch" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "Walisisch" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Danish" msgstr "Dänisch" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "German" msgstr "Deutsch" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Griechisch" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Englisch" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "British English" +msgstr "Britisches Englisch" + +#: conf/global_settings.py:56 msgid "Spanish" msgstr "Spanisch" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estnisch" - -#: conf/global_settings.py:56 -msgid "Argentinean Spanish" -msgstr "Argentinisches Spanisch" - #: conf/global_settings.py:57 -msgid "Basque" -msgstr "Baskisch" +msgid "Argentinean Spanish" +msgstr "Argentinisches Spanisch" #: conf/global_settings.py:58 +msgid "Estonian" +msgstr "Estnisch" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "Baskisch" + +#: conf/global_settings.py:60 msgid "Persian" msgstr "Persisch" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Finnish" msgstr "Finnisch" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "French" msgstr "Französisch" -#: conf/global_settings.py:61 -msgid "Irish" -msgstr "Irisch" - -#: conf/global_settings.py:62 -msgid "Galician" -msgstr "Galicisch" - #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Ungarisch" +msgid "Frisian" +msgstr "Friesisch" #: conf/global_settings.py:64 -msgid "Hebrew" -msgstr "Hebräisch" +msgid "Irish" +msgstr "Irisch" #: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Hindi" +msgid "Galician" +msgstr "Galicisch" #: conf/global_settings.py:66 -msgid "Croatian" -msgstr "Kroatisch" +msgid "Hebrew" +msgstr "Hebräisch" #: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Isländisch" +msgid "Hindi" +msgstr "Hindi" #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Italienisch" +msgid "Croatian" +msgstr "Kroatisch" #: conf/global_settings.py:69 -msgid "Japanese" -msgstr "Japanisch" +msgid "Hungarian" +msgstr "Ungarisch" #: conf/global_settings.py:70 -msgid "Georgian" -msgstr "Georgisch" +msgid "Icelandic" +msgstr "Isländisch" #: conf/global_settings.py:71 -msgid "Korean" -msgstr "Koreanisch" +msgid "Italian" +msgstr "Italienisch" #: conf/global_settings.py:72 +msgid "Japanese" +msgstr "Japanisch" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "Georgisch" + +#: conf/global_settings.py:74 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Lettisch" - -#: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "Litauisch" - #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "Mazedonisch" +msgid "Korean" +msgstr "Koreanisch" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "Holländisch" +msgid "Lithuanian" +msgstr "Litauisch" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Norwegisch" +msgid "Latvian" +msgstr "Lettisch" #: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "Mazedonisch" + +#: conf/global_settings.py:80 +msgid "Mongolian" +msgstr "Mongolisch" + +#: conf/global_settings.py:81 +msgid "Dutch" +msgstr "Holländisch" + +#: conf/global_settings.py:82 +msgid "Norwegian" +msgstr "Norwegisch" + +#: conf/global_settings.py:83 +msgid "Norwegian Bokmal" +msgstr "Norwegisch (Bokmål)" + +#: conf/global_settings.py:84 +msgid "Norwegian Nynorsk" +msgstr "Norwegisch (Nynorsk)" + +#: conf/global_settings.py:85 msgid "Polish" msgstr "Polnisch" -#: conf/global_settings.py:80 +#: conf/global_settings.py:86 msgid "Portuguese" msgstr "Portugiesisch" -#: conf/global_settings.py:81 +#: conf/global_settings.py:87 msgid "Brazilian Portuguese" msgstr "Brasilianisches Portugiesisch" -#: conf/global_settings.py:82 +#: conf/global_settings.py:88 msgid "Romanian" msgstr "Rumänisch" -#: conf/global_settings.py:83 +#: conf/global_settings.py:89 msgid "Russian" msgstr "Russisch" -#: conf/global_settings.py:84 +#: conf/global_settings.py:90 msgid "Slovak" msgstr "Slowakisch" -#: conf/global_settings.py:85 +#: conf/global_settings.py:91 msgid "Slovenian" msgstr "Slowenisch" -#: conf/global_settings.py:86 +#: conf/global_settings.py:92 +msgid "Albanian" +msgstr "Albanisch" + +#: conf/global_settings.py:93 msgid "Serbian" msgstr "Serbisch" -#: conf/global_settings.py:87 +#: conf/global_settings.py:94 +msgid "Serbian Latin" +msgstr "Serbisch (Latein)" + +#: conf/global_settings.py:95 msgid "Swedish" msgstr "Schwedisch" -#: conf/global_settings.py:88 +#: conf/global_settings.py:96 msgid "Tamil" msgstr "Tamilisch" -#: conf/global_settings.py:89 +#: conf/global_settings.py:97 msgid "Telugu" msgstr "Telugisch" -#: conf/global_settings.py:90 +#: conf/global_settings.py:98 msgid "Thai" msgstr "Thailändisch" -#: conf/global_settings.py:91 +#: conf/global_settings.py:99 msgid "Turkish" msgstr "Türkisch" -#: conf/global_settings.py:92 +#: conf/global_settings.py:100 msgid "Ukrainian" msgstr "Ukrainisch" -#: conf/global_settings.py:93 +#: conf/global_settings.py:101 +msgid "Vietnamese" +msgstr "Vietnamesisch" + +#: conf/global_settings.py:102 msgid "Simplified Chinese" msgstr "Vereinfachtes Chinesisch" -#: conf/global_settings.py:94 +#: conf/global_settings.py:103 msgid "Traditional Chinese" msgstr "Traditionelles Chinesisch" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:48 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Erfolgreich %(count)d %(items)s gelöscht." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:55 contrib/admin/options.py:1125 msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:73 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s löschen" @@ -271,19 +307,19 @@ msgid "This year" msgstr "Dieses Jahr" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Ja" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Nein" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Unbekannt" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Aktion:" @@ -315,61 +351,60 @@ msgid "log entries" msgstr "Logeinträge" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:138 contrib/admin/options.py:153 msgid "None" msgstr "-" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:559 #, python-format msgid "Changed %s." msgstr "%s geändert." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:559 contrib/admin/options.py:569 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:568 msgid "and" msgstr "und" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:564 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "%(name)s \"%(object)s\" hinzugefügt." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:568 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "%(list)s von %(name)s \"%(object)s\" geändert." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:573 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "%(name)s \"%(object)s\" gelöscht." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:577 msgid "No fields changed." msgstr "Keine Felder geändert." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:643 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:647 contrib/admin/options.py:680 msgid "You may edit it again below." msgstr "Das Element kann jetzt erneut bearbeitet werden." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:657 contrib/admin/options.py:690 #, python-format msgid "You may add another %s below." msgstr "Es kann ein weiteres Element des Typs %s angelegt werden." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:678 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:686 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -377,45 +412,69 @@ "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Das Element kann jetzt " "geändert werden." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:740 contrib/admin/options.py:997 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Es müssen Objekte aus der Liste ausgewählt werden, um Aktionen " +"durchzuführen. Es wurden keine Objekte geändert." + +#: contrib/admin/options.py:759 +msgid "No action selected." +msgstr "Keine Aktion ausgewählt." + +#: contrib/admin/options.py:840 #, python-format msgid "Add %s" msgstr "%s hinzufügen" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:866 contrib/admin/options.py:1105 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" "Das %(name)s-Objekt mit dem Primärschlüssel %(key)r ist nicht vorhanden." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:931 #, python-format msgid "Change %s" msgstr "%s ändern" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:977 msgid "Database error" msgstr "Datenbankfehler" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1039 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s \"%(name)s\" wurde erfolgreich geändert." msgstr[1] "%(count)s \"%(name)s\" wurden erfolgreich geändert." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1066 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s ausgewählt" +msgstr[1] "Alle %(total_count)s ausgewählt" + +#: contrib/admin/options.py:1071 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 von %(cnt)s ausgewählt" + +#: contrib/admin/options.py:1118 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1155 #, python-format msgid "Change history: %s" msgstr "Änderungsgeschichte: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -423,11 +482,11 @@ "Bitte einen gültigen Benutzernamen und ein Passwort eingeben. Beide Felder " "berücksichtigen die Groß-/Kleinschreibung." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:307 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Bitte melden Sie sich erneut an, da Ihre Sitzung abgelaufen ist." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:314 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -435,64 +494,54 @@ "Ihr Browser scheint keine Cookies zu akzeptieren. Bitte aktivieren Sie diese " "und laden Sie die Seite neu." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:330 contrib/admin/sites.py:336 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:333 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%" "s' versuchen." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:389 msgid "Site administration" msgstr "Website-Verwaltung" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:403 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Anmelden" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:448 #, python-format msgid "%s administration" msgstr "%s-Verwaltung" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Ein oder mehrere %(fieldname)s in %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Ein oder mehrere %(fieldname)s in %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Datum:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Zeit:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Derzeit:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Ändern:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Suchen" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Neu hinzufügen" @@ -508,17 +557,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -554,7 +603,20 @@ #: contrib/admin/templates/admin/actions.html:4 msgid "Go" -msgstr "Los" +msgstr "Ausführen" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Hier klicken, um die Objekte aller Seiten auszuwählen" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Alle %(total_count)s %(module_name)s auswählen" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Auswahl widerrufen" #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 @@ -562,28 +624,28 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Willkommen," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentation" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Passwort ändern" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Abmelden" @@ -595,41 +657,42 @@ msgid "Django administration" msgstr "Django-Verwaltung" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Hinzufügen" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Geschichte" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Auf der Website anzeigen" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Bitte den aufgeführten Fehler korrigieren." msgstr[1] "Bitte die aufgeführten Fehler korrigieren." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "%(name)s hinzufügen" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filter" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Löschen" @@ -677,10 +740,11 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" "Sind Sie sicher, dass Sie die ausgewählten %(object_name)s-Objekte löschen " -"wollen? Es werden zusätzlich die folgenden davon abhängigen Daten gelöscht:" +"wollen? Die folgenden Objekte und und die von ihnen abhängigen Daten werden " +"gelöscht:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -743,15 +807,9 @@ msgstr "Benutzer" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Aktion" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j. N Y, H:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -797,7 +855,7 @@ msgid "Save and continue editing" msgstr "Sichern und weiter bearbeiten" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -805,35 +863,41 @@ "Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere " "Optionen für den Benutzer geändert werden." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Benutzername" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Passwort" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Passwort (wiederholen)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" "Bitte geben Sie ein neues Passwort für den Benutzer %(username)s ein." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Passwort" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Passwort (wiederholen)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "%(verbose_name)s hinzufügen" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Entfernen" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Löschen?" @@ -847,9 +911,9 @@ msgstr "Erneut anmelden" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Passwort ändern" @@ -862,30 +926,26 @@ msgid "Your password was changed." msgstr "Ihr Passwort wurde geändert." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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 Sicherheitsgründen erst Ihr altes Passwort und darunter " "dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das " -"neue Kennwort ein." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Altes Passwort:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Neues Passwort:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Passwort wiederholen:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +"neue Passwort ein." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Altes Passwort" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Neues Passwort" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Mein Passwort ändern" @@ -924,6 +984,14 @@ "Bitte geben Sie Ihr neues Passwort zweimal ein, damit wir überprüfen können, " "ob es richtig eingetippt wurde." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Neues Passwort:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Passwort wiederholen:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Passwort wurde nicht erfolgreich zurückgesetzt" @@ -992,25 +1060,25 @@ msgid "Reset my password" msgstr "Mein Passwort zurücksetzen" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Alle Daten" -#: contrib/admin/views/main.py:70 +#: contrib/admin/views/main.py:65 #, python-format msgid "Select %s" msgstr "%s auswählen" -#: contrib/admin/views/main.py:70 +#: contrib/admin/views/main.py:65 #, python-format msgid "Select %s to change" msgstr "%s zur Änderung auswählen" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "Site" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "Template" @@ -1070,89 +1138,7 @@ msgid "Fields on %s objects" msgstr "Felder am %s Objekt" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Ganzzahl" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Boolescher Wert (True oder False)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Zeichenkette (bis zu %(max_length)s Zeichen)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Kommaseparierte Liste von Ganzzahlen" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Datum (ohne Uhrzeit)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Datum (mit Uhrzeit)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Dezimalzahl" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "E-Mail-Adresse" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Dateipfad" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Gleitkommazahl" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "IP-Adresse" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Boolescher Wert (True, False oder None)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Beziehung zum Eltern-Modell" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Telefonnummer" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Text" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Zeit" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "Adresse (URL)" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "U.S.-Bundesstaat (zwei Großbuchstaben)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "XML-Text" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ist scheinbar kein urlpattern-Objekt" @@ -1229,66 +1215,63 @@ msgstr "" "Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Persönliche Infos" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Berechtigungen" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Wichtige Daten" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Gruppen" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Benutzer hinzufügen" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Passwort ändern: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Benutzername" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" "Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen " -"(Buchstaben, Ziffern und Unterstriche) sind erlaubt." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." +"(Buchstaben, Ziffern und @/./+/-/_) sind erlaubt." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Dieser Wert darf nur Buchstaben, Ziffern und @/./+/-/_ enthalten." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Passwort bestätigen" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Dieser Benutzername ist bereits vergeben." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Die beiden Passwörter sind nicht identisch." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Dieser Benutzer ist inaktiv." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1296,11 +1279,11 @@ "Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für " "die Anmeldung zwingend erforderlich." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-Mail-Adresse" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1308,72 +1291,71 @@ "Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit " "dieser Adresse registriert haben?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Passwort auf %s zurücksetzen" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Neues Passwort" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Neues Passwort bestätigen" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Altes Passwort" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Das alte Passwort war falsch. Bitte neu eingeben." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "Name" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "Codename" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "Berechtigung" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "Berechtigungen" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "Gruppe" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "Gruppen" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "Benutzername" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen " +"(Buchstaben, Ziffern und @/./+/-/_) sind erlaubt." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "Vorname" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "Nachname" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "E-Mail-Adresse" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "Passwort" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1381,20 +1363,20 @@ "Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das Passwort ändern Formular benutzen." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "Redakteur-Status" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "" "Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "Aktiv" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1402,11 +1384,11 @@ "Legt fest, ob dieser Benutzer aktiv ist. Kann deaktiviert werden, anstatt " "Benutzer zu löschen." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "Administrator-Status" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1414,15 +1396,15 @@ "Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln " "zuweisen zu müssen." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "Letzte Anmeldung" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "Mitglied seit" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1430,39 +1412,77 @@ "Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch " "alle Rechte, die seine zugewiesenen Gruppen haben." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "Berechtigungen" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "Benutzer" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "Benutzer" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "Mitteilung" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Abgemeldet" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Bitte eine gültige E-Mail-Adresse eingeben." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Inhalt" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadaten" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "markiert" +msgstr[1] "markiert" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Ausgewählte Kommentare markieren" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "freigegeben" +msgstr[1] "freigegeben" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Ausgewählte Kommentare freigeben" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "entfernt" +msgstr[1] "entfernt" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Ausgewählte Kommentare entfernen" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 Kommentar wurde erfolgreich %(action)s." +msgstr[1] "%(count)s Kommentare wurden erfolgreich %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1474,7 +1494,6 @@ msgstr "Die neuesten Kommentare auf %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Name" @@ -1482,26 +1501,30 @@ msgid "Email address" msgstr "E-Mail-Adresse" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "Adresse (URL)" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Kommentar" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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 erlaubt!" msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht erlaubt!" -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Wenn Sie irgendetwas in dieses Feld eintragen, wird der Kommentar als Spam " "betrachtet" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "Inhaltstyp" @@ -1530,6 +1553,10 @@ msgid "date/time submitted" msgstr "Datum/Zeit Erstellung" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "IP-Adresse" + #: contrib/comments/models.py:61 msgid "is public" msgstr "ist öffentlich" @@ -1615,7 +1642,6 @@ msgstr "Wollen Sie diesen Kommentar wirklich freigeben?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Freigeben" @@ -1640,11 +1666,6 @@ msgid "Really remove this comment?" msgstr "Wollen Sie diesen Kommentar wirklich entfernen?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Entfernen" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Vielen Dank, dass Sie diesen Kommentar entfernt haben" @@ -1675,39 +1696,6 @@ msgid "Preview" msgstr "Vorschau" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Kommentar-Moderation" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Es sind keine Kommentare zu moderieren" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "E-Mail-Adresse" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Authentifiziert?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP-Adresse" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Verfassungsdatum" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "ja" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "nein" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Vielen Dank, dass Sie einen Kommentar geschrieben haben" @@ -1735,11 +1723,11 @@ msgid "or make changes" msgstr "oder Änderungen vornehmen" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "Python Modell-Klassenname" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "Inhaltstypen" @@ -1803,7 +1791,7 @@ msgid "flat pages" msgstr "Seiten" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1811,6 +1799,38 @@ "Es tut uns leid, aber das Formular hat seine Gültigkeit verloren. Bitte " "füllen Sie es erneut aus." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "Das Basis-GIS-Feld, das dem OpenGIS-Geometrie-Typ entspricht." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Punkt" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Linienzug" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Polygon" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Mehrere Punkte" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Mehrere Linienzüge" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Mehrere Polygone" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Sammlung geometrischer Objekte" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Kein geometrischer Wert gegeben." @@ -1916,26 +1936,26 @@ msgid "yesterday" msgstr "gestern" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Bitte eine gültige Postleitzahl im Format NNNN oder ANNNNAAA eingeben." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:92 +#: contrib/localflavor/br/forms.py:131 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Dieses Feld darf nur Ziffern enthalten." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Dieses Feld benötigt 7 oder 8 Ziffern." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "" "Bitte eine gültige CUIT im Format XX-XXXXXXXX-X oder XXXXXXXXXXXX eingeben." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Ungültige CUIT." @@ -1975,8 +1995,8 @@ msgid "Vienna" msgstr "Wien" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Bitte eine gültige Postleitzahl im Format XXXX eingeben." @@ -1986,45 +2006,45 @@ "Bitte eine gültige österreichische Sozialversicherungsnummer im Format XXXX " "XXXXXX eingeben." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Bitte eine gültige vierstellige Postleitzahl eingeben." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:17 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:26 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Telefonnummern müssen das Format XX-XXXX-XXXX haben." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:54 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." msgstr "Bitte einen gültigen brasilianischen Bundesstaat auswählen." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:90 msgid "Invalid CPF number." msgstr "Ungültige CPF-Nummer." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:91 msgid "This field requires at most 11 digits or 14 characters." msgstr "Dieses Feld benötigt mindestens 11 Ziffern oder 14 Zeichen." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:130 msgid "Invalid CNPJ number." msgstr "Ungültige CNPJ-Nummer." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:132 msgid "This field requires at least 14 digits" msgstr "Dieses Feld benötigt mindestens 14 Ziffern" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Bitte eine gültige Postleitzahl im Format XXX XXX eingeben." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Bitte eine gültige kanadische Sozialversicherungsnummer im Format XXX-XXX-" @@ -2134,7 +2154,7 @@ msgid "Zurich" msgstr "Zürich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2142,15 +2162,15 @@ "Bitte eine gültige Schweizer Identifikations- oder Reisepassnummer im " "FormatX1234567<0 oder 1234567890 eingeben." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Bitte eine gültige chilenische RUT eingeben." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Bitte eine chilenische RUT im Format XX.XXX.XXX-X eingeben." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Diese chilenische RUT ist ungültig." @@ -2210,24 +2230,24 @@ msgid "Moravian-Silesian Region" msgstr "Mährisch-Schlesische Region" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Bitte eine gültige Postleitzahl im Format XXXXX oder XXX XX eingeben." -#: contrib/localflavor/cz/forms.py:47 +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "" "Bitte eine Geburtsnummer im Format XXXXXX/XXXX oder XXXXXXXXXX eingeben." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" msgstr "Ungültiger Wert für Geschlecht, gültig sind: 'f' und 'm'" -#: contrib/localflavor/cz/forms.py:49 +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Bitte eine gültige Geburtsnummer eingeben." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Bitte eine gültige IC-Nummer eingeben." @@ -2295,12 +2315,12 @@ msgid "Thuringia" msgstr "Thüringen" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Bitte eine gültige Postleitzahl im Format XXXXX eingeben." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2575,11 +2595,11 @@ msgid "Valencian Community" msgstr "Valencia" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Bitte eine gültige Postleitzahl im Format 01XXX bis 52XXX eingeben." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2587,64 +2607,496 @@ "Bitte eine gültige Telefonnummer in einem der folgenden Formate eingeben " "6XXXXXXXX, 8XXXXXXXX oder 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Bitte eine gültige NIF, NIE oder CIF eingeben." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Bitte eine gültige NIF oder NIE eingeben." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Ungültige Prüfsumme für NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Ungültige Prüfsumme für NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Ungültige Prüfsumme für CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Bitte eine gültige Kontonummer im Format XXXX-XXXX-XX-XXXXXXXXXX eingeben." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Ungültige Prüfsumme für Kontonummer." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Bitte eine gültige finnische Sozialversicherungsnummer eingeben." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonnummern müssen das Format 0X XX XX XX XX haben." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Bitte eine gültige Postleitzahl eingeben" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Bitte eine gültige Telefonnummer eingeben" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Bitte eine gültige Nummernschildnummer eingeben" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Bitte eine gültige NIK/KTP-Nummer eingeben." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi Barat" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Bundesregierung" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX eingeben." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Bitte eine gültige isländische Identifikationsnummer im Format XXXXXX-XXXX " "eingeben." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Die isländische Identifikationsnummer ist nicht gültig." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Bitte eine gültige Postleitzahl eingeben." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Bitte eine gültige Sozialversicherungsnummer eingeben." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Bitte eine gültige Umsatzsteuernummer eingeben." @@ -2841,6 +3293,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Bitte eine gültige Kuwaitische Identifikationsnummer eingeben" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2969,15 +3425,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Bitte eine gültige Postleitzahl eingeben" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Bitte eine gültige Telefonnummer eingeben" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Bitte eine gültige SoFi-Nummer eingeben" @@ -3029,15 +3481,15 @@ msgid "Zuid-Holland" msgstr "Südholland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Bitte eine gültige norwegische Sozialversicherungsnummer eingeben." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Dieses Feld benötigt 8 Zeichen." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Dieses Feld benötigt 11 Zeichen." @@ -3139,6 +3591,15 @@ msgid "West Pomerania" msgstr "Vorpommern" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Bitte eine gültige Postleitzahl im Format XXXX-XXX eingeben." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" +"Telefonnummern müssen aus 9 Ziffern bestehen, oder mit + oder 00 beginnen." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Bitte eine gültige CIF eingeben." @@ -3160,6 +3621,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Bitte eine gültige Postleitzahl im Format XXXXXX eingeben" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Bitte eine gültige Schwedische Organisationsnummer eingeben." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Bitte eine gültige schwedische Personenidentifikationsnummer eingeben." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Ordnungsnummern sind nicht erlaubt." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Bitte eine gültige schwedische Postleitzahl im Format XXXXX eingeben." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banská Bystrica" @@ -3792,22 +4353,47 @@ msgid "Wales" msgstr "Wales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "" "Bitte eine gültige Postleitzahl im Format XXXXX oder XXXXX-XXXX eingeben." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format XXX-" "XX-XXXX eingeben." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Geben Sie einen US-Bundesstaat oder Territorium ein." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "U.S.-Bundesstaat (zwei Großbuchstaben)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefonnummer" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Bitte eine gültige CI im Format X.XXX.XXX-X,XXXXXXX-X oder XXXXXXXX eingeben." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Bitte eine gültige CI-Nummer eingeben." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Bitte eine gültige südafrikanische Identifikationsnummer eingeben" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Bitte eine gültige südafrikanische Postleitzahl eingeben" @@ -3847,6 +4433,10 @@ msgid "Western Cape" msgstr "Westkap" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "Lazy Nachricht" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "Umleitung von" @@ -3911,61 +4501,224 @@ msgid "sites" msgstr "Sites" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Dieser Wert muss eine Ganzzahl sein." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Dieser Wert muss True oder False sein." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Bitte einen gültigen Wert eingeben." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Bitte eine gültige Adresse eingeben." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Diese Adresse scheint nicht gültig zu sein." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Bitte ein gültiges Kürzel, bestehend aus Buchstaben, Ziffern, Unterstrichen " +"und Bindestrichen, eingeben." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Bitte eine gültige IPv4-Adresse eingeben." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Bitte nur durch Komma getrennte Ziffern eingeben." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Bitte sicherstellen, dass der Wert %(limit_value)s ist. (Er ist %(show_value)" +"s)" + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Dieser Wert muss kleiner oder gleich %(limit_value)s sein." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Dieser Wert muss größer oder gleich %(limit_value)s sein." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Bitte sicherstellen, dass der Wert mindestens %(limit_value)d Zeichen hat. " +"(Er hat %(show_value)d)" + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Bitte sicherstellen, dass der Wert maximal %(limit_value)d Zeichen hat. (Er " +"hat %(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s muss für %(date_field)s %(lookup)s eindeutig sein." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s mit diesem %(field_label)s existiert bereits." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Wert %r ist keine gültige Option." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Dieses Feld darf nicht leer sein." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Bitte nur durch Komma getrennte Ziffern eingeben." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Dieses Feld darf nicht leer sein." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Feldtyp: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Ganzzahl" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Dieser Wert muss eine Ganzzahl sein." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Dieser Wert muss True oder False sein." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Boolescher Wert (True oder False)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Zeichenkette (bis zu %(max_length)s Zeichen)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Kommaseparierte Liste von Ganzzahlen" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Datum (ohne Uhrzeit)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Ungültiges Datum: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM[ss[." "uuuuuu]] eingeben." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Datum (mit Uhrzeit)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Dieser Wert muss eine Dezimalzahl sein." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Dezimalzahl" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "E-Mail-Adresse" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Dateipfad" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Dieser Wert muss eine Gleitkommazahl sein." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Gleitkommazahl" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Große Ganzzahl (8 Byte)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Dieser Wert muss None, True oder False sein." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Boolescher Wert (True, False oder None)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Text" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Zeit" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Bitte eine gültige Zeit im Format HH:MM[:ss[.uuuuuu]] eingeben." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "XML-Text" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Modell %(model)s mit dem Primärschlüssel %(pk)r ist nicht vorhanden." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Fremdschlüssel (Typ definiert durch verknüpftes Feld)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "One-to-one-Beziehung" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Many-to-many-Beziehung" + +#: db/models/fields/related.py:1000 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Halten Sie die Strg-Taste (⌘ für Mac) während des Klickens gedrückt, um " "mehrere Einträge auszuwählen." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3975,87 +4728,59 @@ msgstr[1] "" "Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Dieses Feld ist zwingend erforderlich." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Bitte einen gültigen Wert eingeben." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Bitte sicherstellen, dass der Text maximal %(max)d Zeichen hat. (Er hat %" -"(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Bitte sicherstellen, dass der Text wenigstens %(min)d Zeichen hat. (Er hat %" -"(length)d.)" - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Bitte eine ganze Zahl eingeben." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Dieser Wert muss kleiner oder gleich %s sein." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Dieser Wert muss größer oder gleich %s sein." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Bitte eine Zahl eingeben." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Bitte geben Sie nicht mehr als insgesamt %s Ziffern ein." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Bitte geben Sie nicht mehr als %s Dezimalstellen ein." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Bitte geben Sie nicht mehr als %s Ziffern vor dem Komma ein." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Bitte ein gültiges Datum eingeben." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Bitte eine gültige Uhrzeit eingeben." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Bitte ein gültiges Datum und Uhrzeit eingeben." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Es wurde keine Datei übermittelt. Überprüfen Sie das Encoding des Formulars." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Es wurde keine Datei übertragen." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Die ausgewählte Datei ist leer." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4063,7 +4788,7 @@ "Bitte sicherstellen, dass der Dateiname maximal %(max)d Zeichen hat. (Er hat " "%(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4071,114 +4796,86 @@ "Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild oder ist " "defekt." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Bitte eine gültige Adresse eingeben." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Diese Adresse scheint nicht gültig zu sein." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1002 msgid "Enter a list of values." msgstr "Bitte eine Liste mit Werten eingeben." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Bitte eine gültige IPv4-Adresse eingeben." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Bitte ein gültiges Kürzel, bestehend aus Buchstaben, Ziffern, Unterstrichen " -"und Bindestrichen, eingeben." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Reihenfolge" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s muss für %(date_field)s %(lookup)s eindeutig sein." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s mit diesem %(field_label)s existiert bereits." - -#: forms/models.py:594 +#: forms/models.py:562 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Bitte die doppelten Daten für %(field)s korrigieren." -#: forms/models.py:598 +#: forms/models.py:566 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "Bitte die doppelten Daten für %(field)s korrigieren, das eindeutig sein muss." - -#: forms/models.py:604 +msgstr "" +"Bitte die doppelten Daten für %(field)s korrigieren, das eindeutig sein muss." + +#: forms/models.py:572 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -"Bitte die doppelten Daten für %(field_name)s korrigieren, da es für " -"%(lookup)s in %(date_field)s eindeutig sein muss." - -#: forms/models.py:612 +"Bitte die doppelten Daten für %(field_name)s korrigieren, da es für %(lookup)" +"s in %(date_field)s eindeutig sein muss." + +#: forms/models.py:580 msgid "Please correct the duplicate values below." msgstr "Bitte die unten aufgeführten doppelten Werte korrigieren." -#: forms/models.py:867 +#: forms/models.py:855 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "Der Inline-Fremdschlüssel passt nicht zum Primärschlüssel der übergeordneten " "Instanz." -#: forms/models.py:930 +#: forms/models.py:921 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Bitte eine gültige Auswahl treffen. Dies ist keine gültige Auswahl." -#: forms/models.py:1004 +#: forms/models.py:1003 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Bitte eine gültige Auswahl treffen. %s ist keine gültige Auswahl." -#: forms/models.py:1006 +#: forms/models.py:1005 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" ist kein gültiger Wert für einen Primärschlüssel." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:776 msgid "yes,no,maybe" msgstr "Ja,Nein,Vielleicht" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:807 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d Byte" msgstr[1] "%(size)d Bytes" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:809 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:811 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:812 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4387,7 +5084,7 @@ msgid "Dec." msgstr "Dez." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "oder" @@ -4441,33 +5138,76 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "j. N Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "j. N Y, H:i" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s wurde erfolgreich angelegt." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s wurde erfolgreich aktualisiert." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s wurde gelöscht." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Ein oder mehrere %(fieldname)s in %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Ein oder mehrere %(fieldname)s in %(name)s:" + +#~ msgid "Old password:" +#~ msgstr "Altes Passwort:" + +#~ msgid "Relation to parent model" +#~ msgstr "Beziehung zum Eltern-Modell" + +#~ msgid "Add user" +#~ msgstr "Benutzer hinzufügen" + +#~ msgid "Comment moderation queue" +#~ msgstr "Kommentar-Moderation" + +#~ msgid "No comments to moderate" +#~ msgstr "Es sind keine Kommentare zu moderieren" + +#~ msgid "Email" +#~ msgstr "E-Mail-Adresse" + +#~ msgid "Authenticated?" +#~ msgstr "Authentifiziert?" + +#~ msgid "IP Address" +#~ msgstr "IP-Adresse" + +#~ msgid "Date posted" +#~ msgstr "Verfassungsdatum" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "no" +#~ msgstr "nein" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/de/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/de/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/de/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/de/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/de/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -7,44 +7,84 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-15 14:38+0200\n" +"POT-Creation-Date: 2010-05-05 00:38+0200\n" "PO-Revision-Date: 2008-06-23 21:02+0100\n" "Last-Translator: Jannis Leidel \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "Verfügbare %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Alles auswählen" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Hinzufügen" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Entfernen" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "Ausgewählte %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Auswahl treffen und Klick auf" -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Alles abwählen" +#: contrib/admin/media/js/actions.js:18 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "%(sel)s von %(cnt)s ausgewählt" +msgstr[1] "%(sel)s von %(cnt)s ausgewählt" + +#: contrib/admin/media/js/actions.js:109 +#: contrib/admin/media/js/actions.min.js:5 +msgid "" +"You have unsaved changes on individual editable fields. If you run an " +"action, your unsaved changes will be lost." +msgstr "" +"Sie haben Änderungen an editierbaren Feldern vorgenommen und nicht " +"gespeichert. Wollen Sie die Aktion trotzdem ausführen und Ihre Änderungen " +"verwerfen?" + +#: contrib/admin/media/js/actions.js:121 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, but you haven't saved your changes to " +"individual fields yet. Please click OK to save. You'll need to re-run the " +"action." +msgstr "" +"Sie haben eine Aktion ausgewählt, aber ihre vorgenommenen Änderungen nicht " +"gespeichert. Klicken Sie OK, um dennoch zu speichern. Danach müssen Sie die " +"Aktion erneut ausführen." + +#: contrib/admin/media/js/actions.js:123 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, and you haven't made any changes on individual " +"fields. You're probably looking for the Go button rather than the Save " +"button." +msgstr "" +"Sie haben eine Aktion ausgewählt, aber keine Änderungen an editierbaren " +"Feldern vorgenommen. Sie wollten wahrscheinlich auf 'Ausführen' und nicht " +"auf 'Speichern' klicken." + #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 msgid "" @@ -58,62 +98,63 @@ msgid "S M T W T F S" msgstr "S M D M D F S" +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Einblenden" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Ausblenden" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Einblenden" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Ausblenden" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Jetzt" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Uhr" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Uhrzeit" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Mitternacht" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6 Uhr" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Mittag" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Abbrechen" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Heute" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Kalender" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Gestern" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Morgen" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/de/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/de/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/de/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = 'j. F Y H:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y H:i:s' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' + '%Y-%m-%d', '%y-%m-%d', # '2006-10-25', '06-10-25' + # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%d.%m.%Y %H:%M', # '25.10.2006 14:30' + '%d.%m.%Y', # '25.10.2006' + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/el/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/el/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/el/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/en/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'N j, Y' +TIME_FORMAT = 'P' +DATETIME_FORMAT = 'N j, Y, P' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'F j' +SHORT_DATE_FORMAT = 'm/d/Y' +SHORT_DATETIME_FORMAT = 'm/d/Y P' +FIRST_DAY_OF_WEEK = 0 # Sunday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' + # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59' + '%m/%d/%Y %H:%M', # '10/25/2006 14:30' + '%m/%d/%Y', # '10/25/2006' + '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59' + '%m/%d/%y %H:%M', # '10/25/06 14:30' + '%m/%d/%y', # '10/25/06' +) +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +NUMBER_GROUPING = 3 + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en_GB/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/en_GB/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en_GB/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/en_GB/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,4996 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-29 16:32+0200\n" +"PO-Revision-Date: 2010-03-25 08:00+1000\n" +"Last-Translator: Simon Meers \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "" + +#: conf/global_settings.py:55 +msgid "British English" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Spanish" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Argentinean Spanish" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Estonian" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Persian" +msgstr "" + +#: conf/global_settings.py:61 +msgid "Finnish" +msgstr "" + +#: conf/global_settings.py:62 +msgid "French" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Frisian" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Irish" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Galician" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Hebrew" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Hindi" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Croatian" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Hungarian" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Icelandic" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Italian" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Japanese" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Khmer" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:76 +msgid "Korean" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Lithuanian" +msgstr "" + +#: conf/global_settings.py:78 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "" + +#: conf/global_settings.py:80 +msgid "Dutch" +msgstr "" + +#: conf/global_settings.py:81 +msgid "Norwegian" +msgstr "" + +#: conf/global_settings.py:82 +msgid "Norwegian Bokmal" +msgstr "" + +#: conf/global_settings.py:83 +msgid "Norwegian Nynorsk" +msgstr "" + +#: conf/global_settings.py:84 +msgid "Polish" +msgstr "" + +#: conf/global_settings.py:85 +msgid "Portuguese" +msgstr "" + +#: conf/global_settings.py:86 +msgid "Brazilian Portuguese" +msgstr "" + +#: conf/global_settings.py:87 +msgid "Romanian" +msgstr "" + +#: conf/global_settings.py:88 +msgid "Russian" +msgstr "" + +#: conf/global_settings.py:89 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:90 +msgid "Slovenian" +msgstr "" + +#: conf/global_settings.py:91 +msgid "Albanian" +msgstr "" + +#: conf/global_settings.py:92 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:93 +msgid "Serbian Latin" +msgstr "" + +#: conf/global_settings.py:94 +msgid "Swedish" +msgstr "" + +#: conf/global_settings.py:95 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:96 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:97 +msgid "Thai" +msgstr "" + +#: conf/global_settings.py:98 +msgid "Turkish" +msgstr "" + +#: conf/global_settings.py:99 +msgid "Ukrainian" +msgstr "" + +#: conf/global_settings.py:100 +msgid "Vietnamese" +msgstr "" + +#: conf/global_settings.py:101 +msgid "Simplified Chinese" +msgstr "" + +#: conf/global_settings.py:102 +msgid "Traditional Chinese" +msgstr "" + +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "" + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 +msgid "Are you sure?" +msgstr "" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

          By %s:

          \n" +"
            \n" +msgstr "" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "Yes" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "No" +msgstr "" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 +msgid "Unknown" +msgstr "" + +#: contrib/admin/helpers.py:20 +msgid "Action:" +msgstr "" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "" + +#: contrib/admin/options.py:142 contrib/admin/options.py:157 +msgid "None" +msgstr "" + +#: contrib/admin/options.py:563 +#, python-format +msgid "Changed %s." +msgstr "" + +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 +msgid "and" +msgstr "" + +#: contrib/admin/options.py:568 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:572 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:577 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:581 +msgid "No fields changed." +msgstr "" + +#: contrib/admin/options.py:647 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "" + +#: contrib/admin/options.py:651 contrib/admin/options.py:684 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:661 contrib/admin/options.py:694 +#, python-format +msgid "You may add another %s below." +msgstr "" + +#: contrib/admin/options.py:682 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: contrib/admin/options.py:690 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "" + +#: contrib/admin/options.py:842 +#, python-format +msgid "Add %s" +msgstr "" + +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: contrib/admin/options.py:933 +#, python-format +msgid "Change %s" +msgstr "" + +#: contrib/admin/options.py:978 +msgid "Database error" +msgstr "" + +#: contrib/admin/options.py:1014 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: contrib/admin/options.py:1093 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#: contrib/admin/options.py:1130 +#, python-format +msgid "Change history: %s" +msgstr "" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" + +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "" + +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" + +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "" + +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + +#: contrib/admin/sites.py:393 +msgid "Site administration" +msgstr "" + +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "" + +#: contrib/admin/sites.py:452 +#, python-format +msgid "%s administration" +msgstr "" + +#: contrib/admin/widgets.py:75 +msgid "Date:" +msgstr "" + +#: contrib/admin/widgets.py:75 +msgid "Time:" +msgstr "" + +#: contrib/admin/widgets.py:99 +msgid "Currently:" +msgstr "" + +#: contrib/admin/widgets.py:99 +msgid "Change:" +msgstr "" + +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "" + +#: contrib/admin/widgets.py:244 +msgid "Add Another" +msgstr "" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "" + +#: 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 "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/base.html:28 +msgid "Welcome," +msgstr "" + +#: contrib/admin/templates/admin/base.html:33 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "" + +#: contrib/admin/templates/admin/base.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/change_list.html:63 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:82 +msgid "Filter" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 +msgid "Delete" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "" + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "" + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "" + +#: contrib/admin/templatetags/admin_list.py:239 +msgid "All dates" +msgstr "" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

            To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

            \n" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/auth/admin.py:29 +msgid "Personal info" +msgstr "" + +#: contrib/auth/admin.py:30 +msgid "Permissions" +msgstr "" + +#: contrib/auth/admin.py:31 +msgid "Important dates" +msgstr "" + +#: contrib/auth/admin.py:32 +msgid "Groups" +msgstr "" + +#: contrib/auth/admin.py:114 +msgid "Password changed successfully." +msgstr "" + +#: contrib/auth/admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "" + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "" + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "" + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "" + +#: contrib/auth/models.py:99 contrib/auth/models.py:206 +msgid "groups" +msgstr "" + +#: contrib/auth/models.py:196 +msgid "username" +msgstr "" + +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: contrib/auth/models.py:197 +msgid "first name" +msgstr "" + +#: contrib/auth/models.py:198 +msgid "last name" +msgstr "" + +#: contrib/auth/models.py:199 +msgid "e-mail address" +msgstr "" + +#: contrib/auth/models.py:200 +msgid "password" +msgstr "" + +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/auth/models.py:201 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:201 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:202 +msgid "active" +msgstr "" + +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:203 +msgid "superuser status" +msgstr "" + +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:204 +msgid "last login" +msgstr "" + +#: contrib/auth/models.py:205 +msgid "date joined" +msgstr "" + +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" + +#: contrib/auth/models.py:208 +msgid "user permissions" +msgstr "" + +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "" + +#: contrib/auth/models.py:213 +msgid "users" +msgstr "" + +#: contrib/auth/models.py:394 +msgid "message" +msgstr "" + +#: contrib/auth/views.py:79 +msgid "Logged out" +msgstr "" + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 +msgid "Enter a valid e-mail address." +msgstr "" + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "" + +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "" + +#: contrib/comments/forms.py:175 +#, 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] "" + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "" + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"We apologise, but your form has expired. Please continue filling out the " +"form from this page." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "" + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "" + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "" + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "" + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "" + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "" + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "" + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "" + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "" + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "" + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "" + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "" + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "" + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "" + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "" + +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "" + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "" + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "" + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "" + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "" + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "" + +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "" + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "" + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "" + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "" + +#: db/models/fields/__init__.py:585 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "" + +#: db/models/fields/__init__.py:586 +#, python-format +msgid "Invalid date: %s" +msgstr "" + +#: db/models/fields/__init__.py:667 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "" + +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "" + +#: db/models/fields/__init__.py:735 +msgid "This value must be a decimal number." +msgstr "" + +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "" + +#: db/models/fields/__init__.py:822 +msgid "This value must be a float." +msgstr "" + +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "" + +#: db/models/fields/__init__.py:912 +msgid "This value must be either None, True or False." +msgstr "" + +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "" + +#: db/models/fields/__init__.py:1025 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "" + +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "" + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "" + +#: db/models/fields/related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" + +#: db/models/fields/related.py:1061 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +msgstr[1] "" + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "" + +#: forms/fields.py:204 +msgid "Enter a whole number." +msgstr "" + +#: forms/fields.py:235 forms/fields.py:256 +msgid "Enter a number." +msgstr "" + +#: forms/fields.py:259 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "" + +#: forms/fields.py:260 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "" + +#: forms/fields.py:261 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" + +#: forms/fields.py:323 forms/fields.py:838 +msgid "Enter a valid date." +msgstr "" + +#: forms/fields.py:351 forms/fields.py:839 +msgid "Enter a valid time." +msgstr "" + +#: forms/fields.py:377 +msgid "Enter a valid date/time." +msgstr "" + +#: forms/fields.py:435 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: forms/fields.py:436 +msgid "No file was submitted." +msgstr "" + +#: forms/fields.py:437 +msgid "The submitted file is empty." +msgstr "" + +#: forms/fields.py:438 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: forms/fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: forms/fields.py:596 forms/fields.py:671 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 +msgid "Enter a list of values." +msgstr "" + +#: forms/formsets.py:298 forms/formsets.py:300 +msgid "Order" +msgstr "" + +#: forms/models.py:567 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: forms/models.py:571 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:577 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:585 +msgid "Please correct the duplicate values below." +msgstr "" + +#: forms/models.py:860 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" + +#: forms/models.py:926 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: forms/models.py:1008 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "" + +#: forms/models.py:1010 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "" + +#: template/defaultfilters.py:781 +msgid "yes,no,maybe" +msgstr "" + +#: template/defaultfilters.py:812 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:814 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:816 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:817 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: utils/dates.py:18 +msgid "January" +msgstr "" + +#: utils/dates.py:18 +msgid "February" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "" + +#: utils/dates.py:19 +msgid "August" +msgstr "" + +#: utils/dates.py:19 +msgid "September" +msgstr "" + +#: utils/dates.py:19 +msgid "October" +msgstr "" + +#: utils/dates.py:19 +msgid "November" +msgstr "" + +#: utils/dates.py:20 +msgid "December" +msgstr "" + +#: utils/dates.py:23 +msgid "jan" +msgstr "" + +#: utils/dates.py:23 +msgid "feb" +msgstr "" + +#: utils/dates.py:23 +msgid "mar" +msgstr "" + +#: utils/dates.py:23 +msgid "apr" +msgstr "" + +#: utils/dates.py:23 +msgid "may" +msgstr "" + +#: utils/dates.py:23 +msgid "jun" +msgstr "" + +#: utils/dates.py:24 +msgid "jul" +msgstr "" + +#: utils/dates.py:24 +msgid "aug" +msgstr "" + +#: utils/dates.py:24 +msgid "sep" +msgstr "" + +#: utils/dates.py:24 +msgid "oct" +msgstr "" + +#: utils/dates.py:24 +msgid "nov" +msgstr "" + +#: utils/dates.py:24 +msgid "dec" +msgstr "" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "" + +#: utils/text.py:130 +msgid "or" +msgstr "" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: utils/translation/trans_real.py:518 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:520 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:541 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:542 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "" + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "" + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en_GB/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/en_GB/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en_GB/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/en_GB/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,114 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-09-02 22:36-0700\n" +"PO-Revision-Date: 2010-03-25 08:00+1000\n" +"Last-Translator: Simon Meers \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en_GB/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/en_GB/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/en_GB/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,39 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'N j, Y' # 'Oct. 25, 2006' +TIME_FORMAT = 'P' # '2:30 pm' +DATETIME_FORMAT = 'N j, Y, P' # 'Oct. 25, 2006, 2:30 pm' +YEAR_MONTH_FORMAT = 'F Y' # 'October 2006' +MONTH_DAY_FORMAT = 'F j' # 'October 25' +SHORT_DATE_FORMAT = 'd/m/Y' # '25/10/2006' +SHORT_DATETIME_FORMAT = 'd/m/Y P' # '25/10/2006 2:30 pm' +FIRST_DAY_OF_WEEK = 0 # Sunday +DATE_INPUT_FORMATS = ( + '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' + '%Y-%m-%d', # '2006-10-25' + # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' + '%d/%m/%y %H:%M', # '25/10/06 14:30' + '%d/%m/%y', # '25/10/06' +) +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +NUMBER_GROUPING = 3 + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/es/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/es/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/es/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-07 15:15+0200\n" -"PO-Revision-Date: 2009-07-07 15:22+0200\n" +"POT-Creation-Date: 2010-03-08 09:11-0700\n" +"PO-Revision-Date: 2009-11-30 11:31+0100\n" "Last-Translator: Django Spanish Team Language-" "Team: Django Spanish Team MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,215 +18,236 @@ msgstr "árabe" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "búlgaro" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "bengalí" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "búlgaro" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "catalán" +msgid "Bosnian" +msgstr "bosnio" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "catalán" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "checo" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "galés" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "danés" +msgid "Welsh" +msgstr "galés" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "danés" + +#: conf/global_settings.py:52 msgid "German" msgstr "alemán" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "griego" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "inglés" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "español" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "estonio" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "español de Argentina" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "estonio" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "vasco" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "persa" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "finés" -#: conf/global_settings.py:60 -msgid "French" -msgstr "francés" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "irlandés" +msgid "French" +msgstr "francés" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "gallego" +msgid "Frisian" +msgstr "" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "húngaro" +msgid "Irish" +msgstr "irlandés" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "gallego" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "hebreo" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "croata" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "islandés" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "italiano" +msgid "Hungarian" +msgstr "húngaro" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "islandés" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "italiano" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "japonés" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "georgiano" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "koreano" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "letón" - #: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "lituano" +msgid "Korean" +msgstr "koreano" #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "macedonio" +msgid "Lithuanian" +msgstr "lituano" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "holandés" +msgid "Latvian" +msgstr "letón" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "noruego" +msgid "Macedonian" +msgstr "macedonio" #: conf/global_settings.py:79 +msgid "Dutch" +msgstr "holandés" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "noruego" + +#: conf/global_settings.py:81 msgid "Polish" msgstr "polaco" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "portugués" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "portugués de Brasil" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "rumano" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "ruso" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "eslovaco" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "esloveno" -#: conf/global_settings.py:86 +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "albanés" + +#: conf/global_settings.py:89 msgid "Serbian" msgstr "serbio" -#: conf/global_settings.py:87 +#: conf/global_settings.py:90 +#, fuzzy +msgid "Serbian Latin" +msgstr "serbio" + +#: conf/global_settings.py:91 msgid "Swedish" msgstr "sueco" -#: conf/global_settings.py:88 +#: conf/global_settings.py:92 msgid "Tamil" msgstr "tamil" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "tailandés" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "turco" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "ucraniano" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "vietnamita" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "chino simplificado" -#: conf/global_settings.py:94 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "chino tradicional" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Eliminado/s %(count)d %(items)s satisfactoriamente." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1025 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1101 msgid "Are you sure?" msgstr "¿Está seguro?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Eliminar %(verbose_name_plural)s seleccionado/s" @@ -265,19 +286,19 @@ msgid "This year" msgstr "Este año" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "Yes" msgstr "Sí" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:470 msgid "Unknown" msgstr "Desconocido" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:19 msgid "Action:" msgstr "Acción:" @@ -309,105 +330,130 @@ msgid "log entries" msgstr "entradas de registro" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:139 contrib/admin/options.py:154 msgid "None" msgstr "Ninguno" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:558 #, python-format msgid "Changed %s." msgstr "Modificado/a %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:558 contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:802 +#: forms/models.py:553 msgid "and" msgstr "y" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:563 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Añadido/a \"%(object)s\" %(name)s." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:567 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Modificados %(list)s para \"%(object)s\" %(name)s." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:572 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Eliminado/a \"%(object)s\" %(name)s." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:576 msgid "No fields changed." msgstr "No ha cambiado ningún campo." -#: contrib/admin/options.py:598 contrib/auth/admin.py:67 +#: contrib/admin/options.py:642 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"." -#: contrib/admin/options.py:602 contrib/admin/options.py:635 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:646 contrib/admin/options.py:679 msgid "You may edit it again below." msgstr "Puede editarlo de nuevo abajo." -#: contrib/admin/options.py:612 contrib/admin/options.py:645 +#: contrib/admin/options.py:656 contrib/admin/options.py:689 #, python-format msgid "You may add another %s below." msgstr "Puede añadir otro %s abajo." -#: contrib/admin/options.py:633 +#: contrib/admin/options.py:677 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"." -#: contrib/admin/options.py:641 +#: contrib/admin/options.py:685 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "" "Se añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." -#: contrib/admin/options.py:772 +#: contrib/admin/options.py:743 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Se deben seleccionar elementos para poder realizar acciones sobre estos. No " +"se han modificado elementos." + +#: contrib/admin/options.py:761 +msgid "No action selected." +msgstr "No se seleccionó ninguna acción." + +#: contrib/admin/options.py:841 #, python-format msgid "Add %s" msgstr "Añadir %s" -#: contrib/admin/options.py:803 contrib/admin/options.py:1003 +#: contrib/admin/options.py:867 contrib/admin/options.py:1081 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "No existe ningún objeto %(name)s con la clave primaria %(key)r." -#: contrib/admin/options.py:860 +#: contrib/admin/options.py:932 #, python-format msgid "Change %s" msgstr "Modificar %s" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:977 msgid "Database error" msgstr "Error en la base de datos" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:1013 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s fué modificado con éxito." msgstr[1] "%(count)s %(name)s fueron modificados con éxito." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1040 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "de %(count)d seleccionado" +msgstr[1] "de %(count)d seleccionados" + +#: contrib/admin/options.py:1042 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s seleccionado" +msgstr[1] "Todos %(total_count)s seleccionados" + +#: contrib/admin/options.py:1094 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"." -#: contrib/admin/options.py:1054 +#: contrib/admin/options.py:1131 #, python-format msgid "Change history: %s" msgstr "Histórico de modificaciones: %s" -#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -415,11 +461,11 @@ "Por favor, introduzca un nombre de usuario y contraseña correctos. Note que " "ambos campos son sensibles a mayúsculas/minúsculas." -#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Por favor, inicie sesión de nuevo, ya que su sesión ha caducado." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -427,64 +473,54 @@ "Parece que su navegador no está configurado para aceptar cookies. " "Actívelas , recargue esta página, e inténtelo de nuevo." -#: contrib/admin/sites.py:301 contrib/admin/sites.py:307 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Los nombres de usuario no pueden contener el carácter '@'." -#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su " "lugar." -#: contrib/admin/sites.py:360 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Sitio administrativo" -#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Iniciar sesión" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Administración de %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Uno o más %(fieldname)s en %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Fecha:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Hora:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Actualmente:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Modificar:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Buscar" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Añadir otro" @@ -499,17 +535,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -547,34 +583,47 @@ msgid "Go" msgstr "Ir" +#: contrib/admin/templates/admin/actions.html:10 +msgid "Click here to select the objects across all pages" +msgstr "Pulse aquí para seleccionar los objetos a través de todas las páginas" + +#: contrib/admin/templates/admin/actions.html:10 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Seleccionar todos los %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:12 +msgid "Clear selection" +msgstr "Limpiar selección" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Bienvenido/a," -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentación" -#: contrib/admin/templates/admin/base.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Cambiar contraseña" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Terminar sesión" @@ -586,41 +635,42 @@ msgid "Django administration" msgstr "Administración de Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Añadir" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Histórico" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Ver en el sitio" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Por favor, corrija el siguiente error." msgstr[1] "Por favor, corrija los siguientes errores." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:60 #, python-format msgid "Add %(name)s" msgstr "Añadir %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:79 msgid "Filter" msgstr "Filtro" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:294 msgid "Delete" msgstr "Eliminar" @@ -668,10 +718,10 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" -msgstr "" -"¿Está seguro de que quiere borrar los %(object_name)s? Los siguientes " -"objetos y sus elementos relacionados serán eliminados:" +"the following objects and their related items will be deleted:" +msgstr "" +"¿Está seguro de que quiere eliminar los %(object_name)s seleccionados? Los " +"siguientes objetos y sus elementos relacionados serán eliminados:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -734,15 +784,9 @@ msgstr "Usuario" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Acción" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j N Y P" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -788,7 +832,7 @@ msgid "Save and continue editing" msgstr "Grabar y continuar editando" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -796,35 +840,41 @@ "Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar " "el resto de opciones del usuario." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Nombre de usuario" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Contraseña" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Contraseña (de nuevo)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Introduzca la misma contraseña que arriba, para verificación." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" "Introduzca una nueva contraseña para el usuario %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Contraseña" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Contraseña (de nuevo)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Introduzca la misma contraseña que arriba, para verificación." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Agregar otro %(verbose_name)s." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Eliminar" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Eliminar?" @@ -838,9 +888,9 @@ msgstr "Iniciar sesión de nuevo" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Cambio de contraseña" @@ -853,7 +903,7 @@ msgid "Your password was changed." msgstr "Su contraseña ha sido cambiada." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -862,21 +912,17 @@ "introduzca la nueva contraseña dos veces para verificar que la ha escrito " "correctamente." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Contraseña antigua:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Contraseña nueva:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Confirme contraseña:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Contraseña antigua" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Contraseña nueva" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Cambiar mi contraseña" @@ -917,6 +963,14 @@ "Por favor, introduzca su contraseña nueva dos veces para verificar que la ha " "escrito correctamente." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Contraseña nueva:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Confirme contraseña:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Restablecimiento de contraseña fallido" @@ -987,7 +1041,7 @@ msgid "Reset my password" msgstr "Restablecer mi contraseña" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:240 msgid "All dates" msgstr "Todas las fechas" @@ -1001,154 +1055,72 @@ msgid "Select %s to change" msgstr "Escoja %s a modificar" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "sitio" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "plantilla" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "etiqueta:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filtro:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "vista:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Aplicación %r no encontrada" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "" "El modelo %(model_name)r no se ha encontrado en la aplicación %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "el objeto relacionado `%(app_label)s.%(data_type)s`" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:225 -#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:244 -#: contrib/admindocs/views.py:258 contrib/admindocs/views.py:263 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "modelo:" -#: contrib/admindocs/views.py:221 contrib/admindocs/views.py:253 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "los objetos relacionados `%(app_label)s.%(object_name)s`" -#: contrib/admindocs/views.py:225 contrib/admindocs/views.py:258 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "todo %s" -#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:263 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "número de %s" -#: contrib/admindocs/views.py:268 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Campos en %s objetos" -#: contrib/admindocs/views.py:331 contrib/admindocs/views.py:342 -#: contrib/admindocs/views.py:344 contrib/admindocs/views.py:350 -#: contrib/admindocs/views.py:351 contrib/admindocs/views.py:353 -msgid "Integer" -msgstr "Entero" - -#: contrib/admindocs/views.py:332 -msgid "Boolean (Either True or False)" -msgstr "Booleano (Verdadero o Falso)" - -#: contrib/admindocs/views.py:333 contrib/admindocs/views.py:352 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Cadena (máximo %(max_length)s)" - -#: contrib/admindocs/views.py:334 -msgid "Comma-separated integers" -msgstr "Enteros separados por comas" - -#: contrib/admindocs/views.py:335 -msgid "Date (without time)" -msgstr "Fecha (sin hora)" - -#: contrib/admindocs/views.py:336 -msgid "Date (with time)" -msgstr "Fecha (con hora)" - -#: contrib/admindocs/views.py:337 -msgid "Decimal number" -msgstr "Número decimal" - -#: contrib/admindocs/views.py:338 -msgid "E-mail address" -msgstr "Dirección de correo electrónico" - -#: contrib/admindocs/views.py:339 contrib/admindocs/views.py:340 -#: contrib/admindocs/views.py:343 -msgid "File path" -msgstr "Ruta de fichero" - -#: contrib/admindocs/views.py:341 -msgid "Floating point number" -msgstr "Número en coma flotante" - -#: contrib/admindocs/views.py:345 contrib/comments/models.py:60 -msgid "IP address" -msgstr "Dirección IP" - -#: contrib/admindocs/views.py:347 -msgid "Boolean (Either True, False or None)" -msgstr "Booleano (Verdadero, Falso o Nulo)" - -#: contrib/admindocs/views.py:348 -msgid "Relation to parent model" -msgstr "Relación con el modelo padre" - -#: contrib/admindocs/views.py:349 -msgid "Phone number" -msgstr "Número de teléfono" - -#: contrib/admindocs/views.py:354 -msgid "Text" -msgstr "Texto" - -#: contrib/admindocs/views.py:355 -msgid "Time" -msgstr "Hora" - -#: contrib/admindocs/views.py:356 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:357 -msgid "U.S. state (two uppercase letters)" -msgstr "Estado de los EEUU (dos letras mayúsculas)" - -#: contrib/admindocs/views.py:358 -msgid "XML text" -msgstr "Texto XML" - -#: contrib/admindocs/views.py:384 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s no parece ser un objeto urlpattern" @@ -1222,66 +1194,62 @@ msgstr "" "Como antes, pero abre la página de administración en una nueva ventana." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Información personal" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Permisos" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Fechas importantes" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupos" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Añadir usuario" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "La contraseña se ha cambiado con éxito." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Cambiar contraseña: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, " -"dígitos y guiones bajos)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Este valor debe contener sólo letras, números y guiones bajos." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Nombre de usuario" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Requerido. 30 caracteres o menos. Letras, dígitos y @/./+/-/_ solamente." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Este valor puede contener sólo letras, números y @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Contraseña (confirmación)" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Ya existe un usuario con este nombre." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Las dos contraseñas no coinciden." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Esta cuenta está inactiva." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1289,11 +1257,11 @@ "Su navegador no parece tener las cookies habilitadas. Las cookies se " "necesitan para poder ingresar." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Correo electrónico" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1301,74 +1269,71 @@ "Esta dirección de correo electrónico no tiene una cuenta de usuario " "asociada. ¿Está seguro de que se ha registrado?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Contraseña restablecida en %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Contraseña nueva" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Contraseña nueva (confirmación):" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Contraseña antigua" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla " "correctamente." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nombre" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "nombre en código" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "permiso" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "permisos" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "grupo" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupos" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "nombre de usuario" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Requerido. 30 caracteres o menos. Letras, números y @/./+/-/_" + +#: contrib/auth/models.py:197 msgid "first name" msgstr "nombre propio" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "apellidos" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "dirección de correo electrónico" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "contraseña" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1376,19 +1341,19 @@ "Use'[algo]$[sal]$[hash hexadecimal]' o use el " "formulario para cambiar la contraseña." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "es staff" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Indica si el usuario puede entrar en este sitio de administración." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "activo" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1396,11 +1361,11 @@ "Indica si el usuario puede ser tratado como activo. Desmarque esta opción en " "lugar de borrar la cuenta." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "es superusuario" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1408,15 +1373,15 @@ "Indica que este usuario tiene todos los permisos sin asignárselos " "explícitamente." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "último inicio de sesión" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "fecha de alta" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1424,39 +1389,71 @@ "Además de los permisos asignados manualmente, este usuario también tendrá " "todos los permisos de los grupos en los que esté." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "permisos de usuario" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "usuario" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "usuarios" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "mensaje" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Sesión terminada" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:416 msgid "Enter a valid e-mail address." msgstr "Introduzca una dirección de correo electrónico válida." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "contenido" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "metadatos" +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "marcado" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "Marcar los comentarios seleccionados" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "aprobado" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "aprobar los comentarios seleccionados" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "eliminado" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "Eliminar los comentarios seleccionados" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 comentarios ha sido %(action)s satisfactoriamente." +msgstr[1] "%(count)s comentarios han sido %(action)s satisfactoriamente." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1468,7 +1465,6 @@ msgstr "Últimos comentarios en %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nombre" @@ -1476,24 +1472,28 @@ msgid "Email address" msgstr "dirección de correo electrónico" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1120 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Comentario" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "¡Cuide su vocabulario! Aquí no admitimos la palabra %s." msgstr[1] "¡Cuide su vocabulario! Aquí no admitimos las palabras %s." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "Si introduce algo en este campo su comentario será tratado como spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "tipo de contenido" @@ -1522,6 +1522,10 @@ msgid "date/time submitted" msgstr "fecha/hora de envío" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:916 +msgid "IP address" +msgstr "Dirección IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "es público" @@ -1598,14 +1602,13 @@ #: contrib/comments/templates/comments/approve.html:4 msgid "Approve a comment" -msgstr "Aprovar un comentario" +msgstr "Aprobar un comentario" #: contrib/comments/templates/comments/approve.html:7 msgid "Really make this comment public?" msgstr "Realmente desea hacer este comentario público?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Aprobar" @@ -1630,11 +1633,6 @@ msgid "Really remove this comment?" msgstr "¿Realmente desea eliminar este comentario?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Eliminar" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Gracias por eliminar" @@ -1665,39 +1663,6 @@ msgid "Preview" msgstr "Previsualizar" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Cola de moderación de comentarios" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "No hay comentarios por moderar" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Correo electrónico" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "¿Autentificado?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Dirección IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Fecha de envío" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "sí" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "no" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Gracias por comentar" @@ -1725,11 +1690,11 @@ msgid "or make changes" msgstr "o haga cambios" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "nombre de la clase modelo de python" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "tipos de contenido" @@ -1790,7 +1755,7 @@ msgid "flat pages" msgstr "páginas estáticas" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1798,6 +1763,41 @@ "Lo sentimos, pero su formulario ha expirado. Por favor, continue rellenando " "el formulario en esta página." +#: contrib/gis/db/models/fields.py:50 +#, fuzzy +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"El campo GIS base -- se relaciona con el tipo Geometry de la especificación " +"de OpenGIS." + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "Punto" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "Cadena de línea" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "Polígono" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "Punto múltiple" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "Cadena de línea múltiple" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "Polígono múltiple" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "Colección de \"Geometry\"" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "No se indico ningún valor de geometría." @@ -1815,8 +1815,8 @@ "An error occurred when transforming the geometry to the SRID of the geometry " "form field." msgstr "" -"Ocurrió un error al transformar la geometria al SRID de la geometria " -"del campo de formulario." +"Ocurrió un error al transformar la geometria al SRID de la geometria del " +"campo de formulario." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1903,25 +1903,25 @@ msgid "yesterday" msgstr "ayer" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Introduzca un código postal en el formato NNNN or ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Este campo sólo acepta números." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Este campo necesita 7 u 8 dígitos." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Introduzca un CUIT válido en el formato XX-XXXXXXXX-X o XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT inválido." @@ -1961,8 +1961,8 @@ msgid "Vienna" msgstr "Viena" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Introduzca un código postal en el formato XXXX." @@ -1972,19 +1972,19 @@ "Introduzca un número de la Seguridad Social Austriaca válido en el formato " "XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Introduzca un código postal de 4 dígitos." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Introduzca un código postal en el formato XXXX-XXXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1992,27 +1992,27 @@ "Seleccione un estado brasileño válido. Este estado no es uno de los estados " "disponibles." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Número CPF inválido." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Este campo necesita un máximo de 11 dígitos o 14 caracteres." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Número CNPJ inválido." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Este campo necesita 14 dígitos como mínimo" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Introduzca un código postal en el formato XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Introduzca un Número del Seguro Social de Canadá válido en el formato XXX-" @@ -2122,7 +2122,7 @@ msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2130,15 +2130,15 @@ "Introduzca un número de identificación o pasaporte suizos válidos en el " "formato X1234567<0 o 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Introduzca un RUT chileno válido." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "El RUT chileno no es válido." @@ -2198,25 +2198,25 @@ msgid "Moravian-Silesian Region" msgstr "Región Moravia-Silesiana" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Introduzca un código postal en el formato XXXXX o XXX XX." -#: contrib/localflavor/cz/forms.py:47 +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "" "Introduzca un número de nacimiento en el formato XXXXXX/XXXX o XXXXXXXXXX." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" msgstr "" "El parámetro opcional 'Género' es inválido, los valores válidos son 'f' y 'm'" -#: contrib/localflavor/cz/forms.py:49 +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Introduzca un número de nacimiento válido." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Introduzca un número IC válido." @@ -2284,12 +2284,12 @@ msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Introduzca un código postal en el formato XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2564,11 +2564,11 @@ msgid "Valencian Community" msgstr "Comunidad Valenciana" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Introduzca un código postal en el rango y formato 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2576,65 +2576,497 @@ "Introduzca un número de teléfono válido en el formato 6XXXXXXXX, 8XXXXXXXX o " "9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Por favor introduzca un NIF, NIE o CIF válido." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Por favor, introduzca un NIF o NIE válido." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "El NIF es incorrecto." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "El NIE es incorrecto." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "El CIF es incorrecto." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Introduzca un número de cuenta bancaria en el formato XXXX-XXXX-XX-" "XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "El número de cuenta bancaria es incorrecto." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Introduzca un número de seguro social finlandés válido." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Los números de teléfono deben tener el formato 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Introduzca un código postal válido" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Introduzca un número de teléfono válido" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Introduzca un número de placa vehicular válido" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Introduzca un número NIK/KTP válido." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jacarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "de Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "sesión" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduzca un código postal en el formato XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Introduzca un número de identificación de Islandia válido. El formato es " "XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "El número de identificación de Islandia no es válido." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Introduzca un código postal válido." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Introduzca un número de Seguro Social válido." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Introduzca un número VAT válido." @@ -2830,6 +3262,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Introduzca un ID Civil kuwaití válido" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2958,15 +3394,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Introduzca un código postal válido" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Introduzca un número de teléfono válido" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Introduzca un número SoFi válido" @@ -3018,15 +3450,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Introduzca un número de seguro social de Noruega válido." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Este campo necesita 8 dígitos." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Este campo necesita 11 dígitos." @@ -3052,7 +3484,8 @@ #: contrib/localflavor/pl/forms.py:109 msgid "National Business Register Number (REGON) consists of 9 or 14 digits." msgstr "" -"El Número Nacional de Registro de Negocios (REGON) consiste en 9 o 14 dígitos." +"El Número Nacional de Registro de Negocios (REGON) consiste en 9 o 14 " +"dígitos." #: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -3126,6 +3559,14 @@ msgid "West Pomerania" msgstr "West Pomerania" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Introduzca un código postal en el formato XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Los números de teléfono deben ser de 9 dígitos, o comenzar con + o 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Introduzca un CIF válido." @@ -3146,6 +3587,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Introduzca un código postal válido en el formato XXXXXX" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Introduzca un número de organización sueca válido." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Introduzca un número de identidad personal sueco válido." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "No se admiten número de Co-ordinación." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Introduzca un código postal en el formato XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Estocolmo" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Región de Bystrica" @@ -3778,20 +4319,44 @@ msgid "Wales" msgstr "Gales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX" -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Introduzca un estado o territorio de los EEUU." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado de los EEUU (dos letras mayúsculas)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Número de teléfono" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Introduzca un número de CI válido en el formato X.XXX.XXX-X,XXXXXXX-X o XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Introduzca un número CI válido." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Introduzca un ID surafricano válido" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Introduzca un código postal surafricano válido" @@ -3831,6 +4396,10 @@ msgid "Western Cape" msgstr "Western Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "mensaje vago" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirigir desde" @@ -3895,60 +4464,223 @@ msgid "sites" msgstr "sitios" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Este valor debe ser un entero." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Este valor debe ser Verdadero o Falso." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Introduzca un valor correcto." + +#: core/validators.py:87 forms/fields.py:517 +msgid "Enter a valid URL." +msgstr "Introduzca una URL válida." + +#: core/validators.py:89 forms/fields.py:518 +msgid "This URL appears to be a broken link." +msgstr "La URL parece ser un enlace roto." + +#: core/validators.py:123 forms/fields.py:861 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Introduzca un 'slug' válido, consistente en letras, números, guiones bajos o " +"medios." + +#: core/validators.py:126 forms/fields.py:854 +msgid "Enter a valid IPv4 address." +msgstr "Introduzca una dirección IPv4 válida." + +#: core/validators.py:129 db/models/fields/__init__.py:598 +msgid "Enter only digits separated by commas." +msgstr "Introduzca sólo dígitos separados por comas." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Asegúrese de que este valor es %(limit_value)s (actualmente es " +"%(show_value)s)." + +#: core/validators.py:153 forms/fields.py:196 forms/fields.py:246 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Asegúrese de que este valor es menor o igual a %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:197 forms/fields.py:247 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Asegúrese de que este valor es mayor o igual a %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Asegúrese de que este valor tiene al menos %(limit_value)d caracteres (" +"actualmente tiene %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Asegúrese de que este valor tiene a lo más %(limit_value)d caracteres (" +"actualmente tiene %(show_value)d)." + +#: db/models/base.py:780 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "El campo %(field_name)s debe ser único para %(lookup)s %(date_field)s" + +#: db/models/base.py:795 db/models/base.py:803 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Ya existe %(model_name)s con este %(field_label)s." + +#: db/models/fields/__init__.py:62 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "El valor %r no es una opción válida." + +#: db/models/fields/__init__.py:63 msgid "This field cannot be null." msgstr "Este campo no puede estar vacío." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Introduzca sólo dígitos separados por comas." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:64 +msgid "This field cannot be blank." +msgstr "Este campo no puede estar vacío." + +#: db/models/fields/__init__.py:69 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Campo de tipo: %(field_type)s" + +#: db/models/fields/__init__.py:477 db/models/fields/__init__.py:878 +#: db/models/fields/__init__.py:980 db/models/fields/__init__.py:991 +#: db/models/fields/__init__.py:1018 +msgid "Integer" +msgstr "Entero" + +#: db/models/fields/__init__.py:481 db/models/fields/__init__.py:876 +msgid "This value must be an integer." +msgstr "Este valor debe ser un entero." + +#: db/models/fields/__init__.py:516 +msgid "This value must be either True or False." +msgstr "Este valor debe ser Verdadero o Falso." + +#: db/models/fields/__init__.py:518 +msgid "Boolean (Either True or False)" +msgstr "Booleano (Verdadero o Falso)" + +#: db/models/fields/__init__.py:565 db/models/fields/__init__.py:1001 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Cadena (máximo %(max_length)s)" + +#: db/models/fields/__init__.py:593 +msgid "Comma-separated integers" +msgstr "Enteros separados por comas" + +#: db/models/fields/__init__.py:607 +msgid "Date (without time)" +msgstr "Fecha (sin hora)" + +#: db/models/fields/__init__.py:611 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:612 #, python-format msgid "Invalid date: %s" msgstr "Fecha no válida: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:693 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:695 +msgid "Date (with time)" +msgstr "Fecha (con hora)" + +#: db/models/fields/__init__.py:761 msgid "This value must be a decimal number." msgstr "Este valor debe ser un entero." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:763 +msgid "Decimal number" +msgstr "Número decimal" + +#: db/models/fields/__init__.py:818 +msgid "E-mail address" +msgstr "Dirección de correo electrónico" + +#: db/models/fields/__init__.py:825 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Ruta de fichero" + +#: db/models/fields/__init__.py:848 msgid "This value must be a float." msgstr "Este valor debe ser un número con coma flotante." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:850 +msgid "Floating point number" +msgstr "Número en coma flotante" + +#: db/models/fields/__init__.py:903 +msgid "Big (8 byte) integer" +msgstr "Entero grande (8 bytes)" + +#: db/models/fields/__init__.py:932 msgid "This value must be either None, True or False." msgstr "Este valor debe ser Verdadero, Falso o Ninguno." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:934 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (Verdadero, Falso o Nulo)" + +#: db/models/fields/__init__.py:1024 +msgid "Text" +msgstr "Texto" + +#: db/models/fields/__init__.py:1040 +msgid "Time" +msgstr "Hora" + +#: db/models/fields/__init__.py:1044 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Introduzca una hora válida en formato HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1128 +msgid "XML text" +msgstr "Texto XML" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "No existe ningún objeto %(model)s con la clave primaria %(pk)r." + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "Llave foránea (tipo determinado por el campo relacionado)" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "Relación uno-a-uno" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "Relación muchos-a-muchos" + +#: db/models/fields/related.py:959 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar " "más de una opción." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1020 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3960,88 +4692,60 @@ "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " "válidos." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Este campo es obligatorio." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Introduzca un valor correcto." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente " -"tiene %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente " -"tiene %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:195 msgid "Enter a whole number." msgstr "Introduzca un número entero." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Asegúrese de que este valor es menor o igual a %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Asegúrese de que este valor es mayor o igual a %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:225 forms/fields.py:245 msgid "Enter a number." msgstr "Introduzca un número." -#: forms/fields.py:227 +#: forms/fields.py:248 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Asegúrese de que no hay más de %s dígitos en total." -#: forms/fields.py:228 +#: forms/fields.py:249 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Asegúrese de que no hay más de %s decimales." -#: forms/fields.py:229 +#: forms/fields.py:250 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Asegúrese de que no hay más de %s dígitos antes de la coma decimal." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:311 forms/fields.py:826 msgid "Enter a valid date." msgstr "Introduzca una fecha válida." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:339 forms/fields.py:827 msgid "Enter a valid time." msgstr "Introduzca una hora válida." -#: forms/fields.py:361 +#: forms/fields.py:365 msgid "Enter a valid date/time." msgstr "Introduzca una fecha/hora válida." -#: forms/fields.py:447 +#: forms/fields.py:423 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el " "formulario." -#: forms/fields.py:448 +#: forms/fields.py:424 msgid "No file was submitted." msgstr "No se ha enviado ningún fichero" -#: forms/fields.py:449 +#: forms/fields.py:425 msgid "The submitted file is empty." msgstr "El fichero enviado está vacío." -#: forms/fields.py:450 +#: forms/fields.py:426 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4049,7 +4753,7 @@ "Asegúrese de que su texto tiene no más de %(max)d caracteres (actualmente " "tiene %(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:461 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4057,61 +4761,32 @@ "Envíe una imagen válida. El fichero que ha enviado no era una imagen o se " "trataba de una imagen corrupta." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Introduzca una URL válida." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "La URL parece ser un enlace roto." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:584 forms/fields.py:659 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Escoja una opción válida. %(value)s no es una de las opciones disponibles." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:660 forms/fields.py:722 forms/models.py:980 msgid "Enter a list of values." msgstr "Introduzca una lista de valores." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Introduzca una dirección IPv4 válida." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Introduzca un 'slug' válido, consistente en letras, números, guiones bajos o " -"medios." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:290 forms/formsets.py:292 msgid "Order" msgstr "Orden" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "El campo %(field_name)s debe ser único para %(lookup)s %(date_field)s" - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "Ya existe %(model_name)s con este %(field_label)s." - -#: forms/models.py:594 +#: forms/models.py:547 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Por favor, corrija el dato duplicado para %(field)s." -#: forms/models.py:598 +#: forms/models.py:551 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" "Por favor corriga el dato duplicado para %(field)s, el cual debe ser único." -#: forms/models.py:604 +#: forms/models.py:557 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4120,52 +4795,52 @@ "Por favor corriga los datos duplicados para %(field_name)s el cual debe ser " "único para %(lookup)s en %(date_field)s." -#: forms/models.py:612 +#: forms/models.py:565 msgid "Please correct the duplicate values below." msgstr "Por favor, corrija los valores duplicados abajo." -#: forms/models.py:867 +#: forms/models.py:839 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "La clave foránea en linea no coincide con la clave primaria de la instancia " "padre." -#: forms/models.py:930 +#: forms/models.py:905 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Escoja una opción válida. Esa opción no está entre las disponibles." -#: forms/models.py:1004 +#: forms/models.py:981 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles." -#: forms/models.py:1006 +#: forms/models.py:983 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" no es un valor válido para una clave primaria." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "sí,no,tal vez" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4374,7 +5049,7 @@ msgid "Dec." msgstr "dic." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "o" @@ -4428,37 +5103,80 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j N Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j N Y P" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "P" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j \\de F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "El/La %(verbose_name)s se ha creado exitosamente." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "Se actualizó con éxito el %(verbose_name)s." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "El/La %(verbose_name)s ha sido borrado." +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Uno o más %(fieldname)s en %(name)s:" + +#~ msgid "Old password:" +#~ msgstr "Contraseña antigua:" + +#~ msgid "Relation to parent model" +#~ msgstr "Relación con el modelo padre" + +#~ msgid "Add user" +#~ msgstr "Añadir usuario" + +#~ msgid "Comment moderation queue" +#~ msgstr "Cola de moderación de comentarios" + +#~ msgid "No comments to moderate" +#~ msgstr "No hay comentarios por moderar" + +#~ msgid "Email" +#~ msgstr "Correo electrónico" + +#~ msgid "Authenticated?" +#~ msgstr "¿Autentificado?" + +#~ msgid "IP Address" +#~ msgstr "Dirección IP" + +#~ msgid "Date posted" +#~ msgstr "Fecha de envío" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "no" +#~ msgstr "no" + #~ msgid "verbose_name" #~ msgid_plural "verbose_name_plural" #~ msgstr[0] "verbose_name" @@ -4554,9 +5272,6 @@ #~ msgid "deletion date" #~ msgstr "fecha de eliminación" -#~ msgid "moderator deletion" -#~ msgstr "eliminación del moderador" - #~ msgid "moderator deletions" #~ msgstr "eliminaciones del moderador" @@ -4687,9 +5402,6 @@ #~ msgid "The URL %s is a broken link." #~ msgstr "La URL %s es un enlace roto." -#~ msgid "Enter a valid U.S. state abbreviation." -#~ msgstr "Introduzca una abreviatura válida de estado de los EEUU." - #~ msgid "This field must match the '%s' field." #~ msgstr "Este campo debe concordar con el campo '%s'." @@ -4702,9 +5414,6 @@ #~ msgid "This field must be given if %(field)s is not %(value)s" #~ msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s" -#~ msgid "Duplicate values are not allowed." -#~ msgstr "No se admiten valores duplicados." - #~ msgid "This value must be between %(lower)s and %(upper)s." #~ msgstr "Este valor debe estar entre %(lower)s y %(upper)s." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/es/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,30 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'j \de F \de Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = r'j \de F \de Y \a \l\a\s H:i' +YEAR_MONTH_FORMAT = r'F \de Y' +MONTH_DAY_FORMAT = r'j \de F' +SHORT_DATE_FORMAT = 'd/m/Y' +SHORT_DATETIME_FORMAT = 'd/m/Y H:i' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + # '31/12/2009', '31/12/09' + '%d/%m/%Y', '%d/%m/%y' +) +TIME_INPUT_FORMATS = ( + # '14:30:59', '14:30' + '%H:%M:%S', '%H:%M' +) +DATETIME_INPUT_FORMATS = ( + '%d/%m/%Y %H:%M:%S', + '%d/%m/%Y %H:%M', + '%d/%m/%y %H:%M:%S', + '%d/%m/%y %H:%M', +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es_AR/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/es_AR/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es_AR/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/es_AR/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/es_AR/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -6,229 +6,267 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-21 23:56-0300\n" -"PO-Revision-Date: 2009-07-22 00:13-0300\n" +"POT-Creation-Date: 2010-05-04 12:05-0300\n" +"PO-Revision-Date: 2010-05-04 22:18-0300\n" "Last-Translator: Ramiro Morales \n" "Language-Team: Django-I18N \n" +"Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.0.1\n" #: conf/global_settings.py:44 msgid "Arabic" msgstr "árabe" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "bengalí" +msgid "Bulgarian" +msgstr "búlgaro" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "búlgaro" +msgid "Bengali" +msgstr "bengalí" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "bosnio" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "catalán" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "checo" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "galés" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Danish" msgstr "danés" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "German" msgstr "alemán" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "griego" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "inglés" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "British English" +msgstr "inglés británico" + +#: conf/global_settings.py:56 msgid "Spanish" msgstr "español" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "estonio" - -#: conf/global_settings.py:56 -msgid "Argentinean Spanish" -msgstr "español de Argentina" - #: conf/global_settings.py:57 -msgid "Basque" -msgstr "vasco" +msgid "Argentinean Spanish" +msgstr "español de Argentina" #: conf/global_settings.py:58 +msgid "Estonian" +msgstr "estonio" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "vasco" + +#: conf/global_settings.py:60 msgid "Persian" msgstr "persa" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Finnish" msgstr "finlandés" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "French" msgstr "francés" -#: conf/global_settings.py:61 -msgid "Irish" -msgstr "irlandés" - -#: conf/global_settings.py:62 -msgid "Galician" -msgstr "gallego" - #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "húngaro" +msgid "Frisian" +msgstr "frisón" #: conf/global_settings.py:64 -msgid "Hebrew" -msgstr "hebreo" +msgid "Irish" +msgstr "irlandés" #: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Hindi" +msgid "Galician" +msgstr "gallego" #: conf/global_settings.py:66 -msgid "Croatian" -msgstr "croata" +msgid "Hebrew" +msgstr "hebreo" #: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "islandés" +msgid "Hindi" +msgstr "hindi" #: conf/global_settings.py:68 -msgid "Italian" -msgstr "italiano" +msgid "Croatian" +msgstr "croata" #: conf/global_settings.py:69 -msgid "Japanese" -msgstr "japonés" +msgid "Hungarian" +msgstr "húngaro" #: conf/global_settings.py:70 -msgid "Georgian" -msgstr "georgiano" +msgid "Icelandic" +msgstr "islandés" #: conf/global_settings.py:71 -msgid "Korean" -msgstr "koreano" +msgid "Italian" +msgstr "italiano" #: conf/global_settings.py:72 +msgid "Japanese" +msgstr "japonés" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "georgiano" + +#: conf/global_settings.py:74 msgid "Khmer" msgstr "jémer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Kannada" msgstr "canarés" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "letón" - -#: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "lituano" - #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "macedonio" +msgid "Korean" +msgstr "coreano" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "holandés" +msgid "Lithuanian" +msgstr "lituano" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "noruego" +msgid "Latvian" +msgstr "letón" #: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "macedonio" + +#: conf/global_settings.py:80 +msgid "Mongolian" +msgstr "mongol" + +#: conf/global_settings.py:81 +msgid "Dutch" +msgstr "holandés" + +#: conf/global_settings.py:82 +msgid "Norwegian" +msgstr "noruego" + +#: conf/global_settings.py:83 +msgid "Norwegian Bokmal" +msgstr "bokmål" + +#: conf/global_settings.py:84 +msgid "Norwegian Nynorsk" +msgstr "nynorsk" + +#: conf/global_settings.py:85 msgid "Polish" msgstr "polaco" -#: conf/global_settings.py:80 +#: conf/global_settings.py:86 msgid "Portuguese" msgstr "portugués" -#: conf/global_settings.py:81 +#: conf/global_settings.py:87 msgid "Brazilian Portuguese" msgstr "portugués de Brasil" -#: conf/global_settings.py:82 +#: conf/global_settings.py:88 msgid "Romanian" msgstr "rumano" -#: conf/global_settings.py:83 +#: conf/global_settings.py:89 msgid "Russian" msgstr "ruso" -#: conf/global_settings.py:84 +#: conf/global_settings.py:90 msgid "Slovak" msgstr "eslovaco" -#: conf/global_settings.py:85 +#: conf/global_settings.py:91 msgid "Slovenian" msgstr "esloveno" -#: conf/global_settings.py:86 +#: conf/global_settings.py:92 +msgid "Albanian" +msgstr "albanés" + +#: conf/global_settings.py:93 msgid "Serbian" msgstr "serbio" -#: conf/global_settings.py:87 +#: conf/global_settings.py:94 +msgid "Serbian Latin" +msgstr "Latín de Serbia" + +#: conf/global_settings.py:95 msgid "Swedish" msgstr "sueco" -#: conf/global_settings.py:88 +#: conf/global_settings.py:96 msgid "Tamil" msgstr "tamil" -#: conf/global_settings.py:89 +#: conf/global_settings.py:97 msgid "Telugu" msgstr "telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:98 msgid "Thai" msgstr "tailandés" -#: conf/global_settings.py:91 +#: conf/global_settings.py:99 msgid "Turkish" msgstr "turco" -#: conf/global_settings.py:92 +#: conf/global_settings.py:100 msgid "Ukrainian" msgstr "ucraniano" -#: conf/global_settings.py:93 +#: conf/global_settings.py:101 +msgid "Vietnamese" +msgstr "vietnamita" + +#: conf/global_settings.py:102 msgid "Simplified Chinese" msgstr "chino simplificado" -#: conf/global_settings.py:94 +#: conf/global_settings.py:103 msgid "Traditional Chinese" msgstr "chino tradicional" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:48 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Se eliminaron con éxito %(count)d %(items)s." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:55 contrib/admin/options.py:1125 msgid "Are you sure?" msgstr "¿Está seguro?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:73 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Eliminar %(verbose_name_plural)s seleccionados/as" @@ -267,19 +305,19 @@ msgid "This year" msgstr "Este año" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Sí" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Desconocido" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Acción:" @@ -311,61 +349,60 @@ msgid "log entries" msgstr "entradas de registro" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:138 contrib/admin/options.py:153 msgid "None" msgstr "Ninguno" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:559 #, python-format msgid "Changed %s." msgstr "Modifica %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:559 contrib/admin/options.py:569 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:568 msgid "and" msgstr "y" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:564 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Se agregó %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:568 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Se modificaron %(list)s en %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:573 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Se eliminó %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:577 msgid "No fields changed." msgstr "No ha modificado ningún campo." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:643 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Se agregó con éxito %(name)s \"%(obj)s\"." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:647 contrib/admin/options.py:680 msgid "You may edit it again below." msgstr "Puede modificarlo/a nuevamente abajo." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:657 contrib/admin/options.py:690 #, python-format msgid "You may add another %s below." msgstr "Puede agregar otro/a %s abajo." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:678 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Se modificó con éxito %(name)s \"%(obj)s\"." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:686 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -373,44 +410,68 @@ "Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo/a nuevamente " "abajo." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:740 contrib/admin/options.py:997 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Deben existir items seleccionados para poder realizar acciones sobre los " +"mismos. No se modificó ningún item." + +#: contrib/admin/options.py:759 +msgid "No action selected." +msgstr "No se ha seleccionado ninguna acción." + +#: contrib/admin/options.py:840 #, python-format msgid "Add %s" msgstr "Agregar %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:866 contrib/admin/options.py:1105 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "No existe un objeto %(name)s con una clave primaria %(key)r." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:931 #, python-format msgid "Change %s" msgstr "Modificar %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:977 msgid "Database error" msgstr "Error de base de datos" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1039 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "Se ha modificado con éxito %(count)s %(name)s." msgstr[1] "Se han modificado con éxito %(count)s %(name)s." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1066 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count) seleccionados/as" +msgstr[1] "Los/as %(total_count)s han sido seleccionados/as" + +#: contrib/admin/options.py:1071 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 de %(cnt)s seleccionados/as" + +#: contrib/admin/options.py:1118 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1155 #, python-format msgid "Change history: %s" msgstr "Historia de modificaciones: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -418,11 +479,11 @@ "Por favor introduzca un nombre de usuario y una contraseña correctos. Note " "que ambos campos son sensibles a mayúsculas/minúsculas." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:307 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Por favor, identifíquese de nuevo porque su sesión ha caducado." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:314 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -430,64 +491,54 @@ "Parece que su navegador no está configurado para aceptar cookies. Por favor " "actívelas, recargue esta página, e inténtelo de nuevo." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:330 contrib/admin/sites.py:336 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Los nombres de usuario no pueden contener el carácter '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:333 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Su dirección de correo electrónico no es su nombre de usuario. Intente " "nuevamente usando '%s'." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:389 msgid "Site administration" msgstr "Administración de sitio" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:403 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Identificarse" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:448 #, python-format msgid "%s administration" msgstr "Administración de %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Uno o más %(fieldname)s en %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Fecha:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Hora:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Actualmente" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Modificar:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Buscar" -#: contrib/admin/widgets.py:235 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Agregar otro/a" @@ -502,17 +553,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -550,34 +601,47 @@ msgid "Go" msgstr "Ejecutar" +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Haga click aquí para seleccionar los objetos de todas las páginas" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Seleccionar lo(s)/a(s) %(total_count)s de %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Borrar selección" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Bienvenido," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentación" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Cambiar contraseña" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Cerrar sesión" @@ -589,41 +653,42 @@ msgid "Django administration" msgstr "Administración de Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Agregar" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Historia" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Ver en el sitio" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Por favor, corrija el siguiente error." msgstr[1] "Por favor, corrija los siguientes errores." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Agregar %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtrar" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Eliminar" @@ -671,10 +736,10 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" "¿Está seguro de que quiere eliminar los objetos %(object_name)s " -"seleccionados? Se eliminarán todos los siguientes objetos " +"seleccionados? Se eliminarán todos los siguientes objetos y sus items " "relacionados:" #: contrib/admin/templates/admin/filter.html:2 @@ -738,21 +803,15 @@ msgstr "Usuario" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Acción" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j N Y P" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"Este objeto no tiene historia de modificaciones. Probablemente no fué " +"Este objeto no tiene historia de modificaciones. Probablemente no fue " "añadido usando este sitio de administración." #: contrib/admin/templates/admin/pagination.html:10 @@ -762,7 +821,7 @@ #: contrib/admin/templates/admin/pagination.html:11 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Save" -msgstr "Grabar" +msgstr "Guardar" #: contrib/admin/templates/admin/search_form.html:8 msgid "Search" @@ -782,17 +841,17 @@ #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" -msgstr "Grabar como nuevo" +msgstr "Guardar como nuevo" #: contrib/admin/templates/admin/submit_line.html:6 msgid "Save and add another" -msgstr "Grabar y añadir otro" +msgstr "Guardar y agregar otro" #: contrib/admin/templates/admin/submit_line.html:7 msgid "Save and continue editing" -msgstr "Grabar y continuar editando" - -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgstr "Guardar y continuar editando" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -800,36 +859,42 @@ "Primero, introduzca un nombre de usuario y una contraseña. Luego podrá " "configurar opciones adicionales." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Nombre de usuario:" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Contraseña:" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Contraseña (de nuevo)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "" -"Para verificación, introduzca la misma contraseña que introdujo arriba." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" "Introduzca una nueva contraseña para el usuario %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Contraseña:" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Contraseña (de nuevo)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "" +"Para verificación, introduzca la misma contraseña que introdujo arriba." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Agregar otro/a %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Eliminar" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Eliminar?" @@ -843,9 +908,9 @@ msgstr "Identificarse de nuevo" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Cambio de contraseña" @@ -858,7 +923,7 @@ msgid "Your password was changed." msgstr "Su contraseña ha sido cambiada." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -867,21 +932,17 @@ "antigua y luego introduzca la nueva contraseña dos veces para verificar que " "la ha escrito correctamente." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Contraseña antigua:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Contraseña nueva:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Confirme contraseña:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Contraseña antigua" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Contraseña nueva" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Cambiar mi contraseña" @@ -920,6 +981,14 @@ "Por favor introduzca su nueva contraseña dos veces de manera que podamos " "verificar que la ha escrito correctamente." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Contraseña nueva:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Confirme contraseña:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Reinicialización de contraseña exitosa" @@ -949,8 +1018,7 @@ #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" -"Recibe este mensaje debido a que solicitó recuperar la contraseña" +msgstr "Recibe este mensaje debido a que solicitó recuperar la contraseña" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -992,25 +1060,25 @@ msgid "Reset my password" msgstr "Recuperar mi contraseña" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Todas las fechas" -#: contrib/admin/views/main.py:70 +#: contrib/admin/views/main.py:65 #, python-format msgid "Select %s" msgstr "Seleccione %s" -#: contrib/admin/views/main.py:70 +#: contrib/admin/views/main.py:65 #, python-format msgid "Select %s to change" msgstr "Seleccione %s a modificar" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "sitio" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "plantilla" @@ -1070,89 +1138,7 @@ msgid "Fields on %s objects" msgstr "Campos en objetos %s" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Entero" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Booleano (Verdadero o Falso)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Cadena (máximo %(max_length)s)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Enteros separados por comas" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Fecha (sin hora)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Fecha (con hora)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Número decimal" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "Dirección de correo electrónico" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Ruta de archivo" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Número de punto flotante" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "Dirección IP" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Booleano (Verdadero, Falso o Nulo)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Relación con el modelo padre" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Número de teléfono" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Texto" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Hora" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Estado de los EE.UU. (dos letras mayúsculas)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "Texto XML" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s no parece ser un objeto urlpattern" @@ -1226,66 +1212,63 @@ msgid "As above, but opens the admin page in a new window." msgstr "Ídem, pero abre la página de administración en una nueva ventana." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Información personal" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Permisos" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Fechas importantes" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupos" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Agregar usuario" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Cambio de contraseña exitoso" -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Cambiar contraseña: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Nombre de usuario:" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" "Obligatorio. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y " -"guiones bajos)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Este valor debe contener sólo letras, números y guiones bajos." +"@/./+/-/_) solamente." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Este valor solo puede contener letras, números y @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Confirmación de contraseña" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Ya existe un usuario con ese nombre." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Los dos campos de contraseñas no coinciden entre si." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Esta cuenta está inactiva" -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1293,86 +1276,85 @@ "Su navegador Web aparenta no estar configurado para aceptar cookies. Las " "cookies son un requerimiento para poder ingresar." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Correo electrónico" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" msgstr "" -"Esa dirección de e-mail no está asociada a ninguna cuenta de usuario. ¿Está " -"seguro de que ya se ha registrado?" - -#: contrib/auth/forms.py:135 +"Esa dirección de correo electrónico no está asociada a ninguna cuenta de " +"usuario. ¿Está seguro de que ya se ha registrado?" + +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Reinicialización de contraseña en %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Contraseña nueva" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Confirmación de contraseña nueva" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Contraseña antigua" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "La antigua contraseña introducida es incorrecta. Por favor introdúzcala " "nuevamente." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nombre" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "nombre en código" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "permiso" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "permisos" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "grupo" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupos" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "nombre de usuario" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obligatorio. Longitud máxima de 30 caracteres alfanuméricos (letras, dígitos " +"y @/./+/-/_)." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "nombre" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "apellido" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "dirección de correo electrónico" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "contraseña" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1380,19 +1362,19 @@ "Use '[algo]$[salt]$[hexdigest]' o use el formulario de " "cambio de contraseña." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "es staff" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Indica si el usuario puede ingresar a este sitio de administración." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "activo" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1400,11 +1382,11 @@ "Indica si el usuario debe ser tratado como un usuario activo. Desactive este " "campo en lugar de eliminar usuarios." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "es superusuario" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1412,15 +1394,15 @@ "Indica que este usuario posee todos los permisos sin que sea necesario " "asignarle los mismos en forma explícita." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "último ingreso" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "fecha de creación" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1428,39 +1410,77 @@ "Además de los permisos asignados manualmente, este usuario también poseerá " "todos los permisos de los grupos a los que pertenezca." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "permisos de usuario" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "usuario" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "usuarios" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "mensaje" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Sesión cerrada" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Introduzca una dirección de correo electrónico válida" -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Contenido" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadatos" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "marcado" +msgstr[1] "marcados" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Marcar comentarios seleccionados" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "aprobado" +msgstr[1] "aprobados" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Aprobar comentario seleccionado" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "eliminado" +msgstr[1] "eliminados" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Eliminar comentarios seleccionados" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "un comentario fue %(action)s satisfactoriamente." +msgstr[1] "%(count)s comentarios fueros %(action)s satisfactoriamente" + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1472,7 +1492,6 @@ msgstr "Últimos comentarios en %(site_name)s." #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nombre" @@ -1480,24 +1499,28 @@ msgid "Email address" msgstr "Dirección de correo electrónico" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Comentario" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "¡Controla tu lenguaje! Aquí no admitimos la palabra %s." msgstr[1] "¡Controla tu lenguaje! Aquí no admitimos las palabras %s." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "Si introduce algo en este campo su comentario será tratado como spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "tipo de contenido" @@ -1526,6 +1549,10 @@ msgid "date/time submitted" msgstr "fecha/hora de envío" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "Dirección IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "es público" @@ -1533,8 +1560,7 @@ #: contrib/comments/models.py:62 msgid "" "Uncheck this box to make the comment effectively disappear from the site." -msgstr "" -"deseleccione esta caja para lograr que el comentario desaparezca del sitio." +msgstr "desmarque este ítem para que el comentario desaparezca del sitio." #: contrib/comments/models.py:64 msgid "is removed" @@ -1545,7 +1571,7 @@ "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará un " +"Marque este ítem si el comentario es inapropiado. En su lugar se mostrará un " "mensaje \"Este comentario ha sido eliminado\"." #: contrib/comments/models.py:77 @@ -1608,7 +1634,6 @@ msgstr "¿Confirma que realmente desea hacer este comentario público?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Aprobar" @@ -1633,11 +1658,6 @@ msgid "Really remove this comment?" msgstr "¿Confirma que realmente desea eliminar este comentario?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Eliminar" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "¡Gracias por eliminar!" @@ -1668,39 +1688,6 @@ msgid "Preview" msgstr "Previsualización" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Cola de comentarios que necesitan revisión" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "No hay comentarios que necesiten revisación" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Correo electrónico" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "¿Identificado?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Dirección IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "fecha de creación" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "sí" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "no" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Gracias por dejar su comentario" @@ -1728,11 +1715,11 @@ msgid "or make changes" msgstr "o realice modificaciones" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "nombre de la clase python del modelo" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "tipos de contenido" @@ -1795,7 +1782,7 @@ msgid "flat pages" msgstr "páginas estáticas" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1803,6 +1790,40 @@ "Lamentablemente su formulario ha caducado. Por favor continúe rellenando el " "formulario en esta página." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"El campo GIS base -- corresponde al tipo Geometry de la especificación " +"OpenGIS." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Punto" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Secuencia de líneas" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Polígono" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Multi-punto" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Cadena multi-línea" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Multi polígono" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Colección de Geometry's" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "No se ha proporcionado un valor de geometría." @@ -1825,19 +1846,19 @@ #: contrib/humanize/templatetags/humanize.py:19 msgid "th" -msgstr "th" +msgstr "to" #: contrib/humanize/templatetags/humanize.py:19 msgid "st" -msgstr "st" +msgstr "ro" #: contrib/humanize/templatetags/humanize.py:19 msgid "nd" -msgstr "nd" +msgstr "do" #: contrib/humanize/templatetags/humanize.py:19 msgid "rd" -msgstr "rd" +msgstr "ro" #: contrib/humanize/templatetags/humanize.py:51 #, python-format @@ -1908,25 +1929,25 @@ msgid "yesterday" msgstr "ayer" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Introduzca un código postal en formato NNNN o ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:92 +#: contrib/localflavor/br/forms.py:131 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." -msgstr "Este campo permite sólo valores numéricos." - -#: contrib/localflavor/ar/forms.py:50 +msgstr "Este campo sólo permite valores numéricos." + +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Este campo requiere 7 u 8 dígitos." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Introduzca un CUIT válido en formato XX-XXXXXXXX-X o XXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT inválido." @@ -1966,29 +1987,30 @@ msgid "Vienna" msgstr "Viena" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Introduzca un zip code en formato XXXX." #: contrib/localflavor/at/forms.py:48 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." msgstr "" -"Introduzca un Número de Seguridad Social austríaco en formato XXXX XXXXXX." - -#: contrib/localflavor/au/forms.py:16 +"Introduzca un Número de Seguridad Social austríaco válido en formato XXXX " +"XXXXXX." + +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Introduzca un post code de 4 dígitos." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:17 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Introduzca un zip code en formato XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:26 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Los números telefónicos deben respetar el formato XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:54 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1996,30 +2018,31 @@ "Seleccione un estado Brasileño válido. Ese estado no es uno de los estados " "disponibles." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:90 msgid "Invalid CPF number." msgstr "Número CPF inválido." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:91 msgid "This field requires at most 11 digits or 14 characters." msgstr "Este campo requiere como máximo 11 dígitos o 14 caracteres." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:130 msgid "Invalid CNPJ number." msgstr "Número CNPJ inválido." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:132 msgid "This field requires at least 14 digits" msgstr "Este campo requiere al menos 14 dígitos." -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Introduzca un código postal en formato XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" -"Introduzca un Número de Seguridad Social Canadiense en formato XXX-XXX-XXX." +"Introduzca un Número de Seguridad Social Canadiense válido en formato XXX-" +"XXX-XXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -2125,7 +2148,7 @@ msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2133,15 +2156,15 @@ "Introduzca un número válido de tarjeta de identidad o pasaporte Suizos en " "formato X1234567<0 o 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Introduzca un RUT chileno válido." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Introduzca un RUT chileno válido. EL formato es XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "El RUT chileno no es válido." @@ -2155,7 +2178,7 @@ #: contrib/localflavor/cz/cz_regions.py:10 msgid "South Bohemian Region" -msgstr "región Bohemian Meridional" +msgstr "región Bohemia Meridional" #: contrib/localflavor/cz/cz_regions.py:11 msgid "Pilsen Region" @@ -2201,24 +2224,26 @@ msgid "Moravian-Silesian Region" msgstr "región Moravia-Silesia" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Introduzca un código postal en formato XXXXX o XXX XX." -#: contrib/localflavor/cz/forms.py:47 +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "" "Introduzca un número de nacimiento en formato XXXXXX/XXXX o XXXXXXXXXX." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Parámetro opcional Género inválido, valores válidos son 'f' y 'm'" - -#: contrib/localflavor/cz/forms.py:49 +msgstr "" +"Valor erróneo para el parámetro opcional género. Los valores válidos son 'f' " +"y 'm'" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." -msgstr "Introduzca un número ide nacimiento válido." - -#: contrib/localflavor/cz/forms.py:106 +msgstr "Introduzca un número de nacimiento válido." + +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Introduzca un número IC válido." @@ -2232,11 +2257,11 @@ #: contrib/localflavor/de/de_states.py:7 msgid "Berlin" -msgstr "Berlin" +msgstr "Berlín" #: contrib/localflavor/de/de_states.py:8 msgid "Brandenburg" -msgstr "Brandenburg" +msgstr "Brandenburgo" #: contrib/localflavor/de/de_states.py:9 msgid "Bremen" @@ -2260,7 +2285,7 @@ #: contrib/localflavor/de/de_states.py:14 msgid "North Rhine-Westphalia" -msgstr "North Rhine-Westphalia" +msgstr "Renania septentrional-Westfalia" #: contrib/localflavor/de/de_states.py:15 msgid "Rhineland-Palatinate" @@ -2286,12 +2311,12 @@ msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Introduzca un zip code en formato XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2566,13 +2591,13 @@ msgid "Valencian Community" msgstr "Comunidad Valenciana" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "" "Introduzca un código postal en el siguiente rango y con el siguiente " "formato: 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2580,65 +2605,497 @@ "Introduzca un número telefónico en uno de los siguientes formatos: " "6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Por favor introduzca un NIF, NIE o CIF válidos." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Por favor, introduzca un NIF o CIE válidos." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Código de verificación de NIF inválido." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Código de verificación de NIE inválido." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Código de verificación de CIF inválido." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Por favor introduzca un número de cuenta bancaria válido en formato XXXX-" "XXXX-XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Código de verificación de número de cuenta bancaria inválido." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Introduzca un número de seguridad social finlandés válido." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Los números telefónicos deben respetar el formato 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Introduzca un código postal válido." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Introduzca un número telefónico válido." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Introduzca un número de placa de licencia de vehículo válido." + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Introduzca un número NIK/KTP válido." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Java Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Java Central" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Java Oriental" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Occidental" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Meridional" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Central" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Oriental" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Islas Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Molucas" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Molucas Septentrional" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Aceh" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusatenggara Occidental" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusatenggara Oriental" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papúa" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Provincia de Papúa Occidental" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Célebes Occidental" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduzca un zip code en formato XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Introduzca un número de identificación islandés válido. El formato es XXXXXX-" "XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "El número de identificación islandés no es válido." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Introduzca un zip code válido." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Introduzca un número de Seguridad Social válido." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Introduzca un número VAT válido." @@ -2696,7 +3153,7 @@ #: contrib/localflavor/jp/jp_prefectures.py:16 msgid "Tokyo" -msgstr "Tokyo" +msgstr "Tokio" #: contrib/localflavor/jp/jp_prefectures.py:17 msgid "Kanagawa" @@ -2834,6 +3291,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Introduzca un número de ID civil kuwaití válido." + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2962,15 +3423,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Introduzca un código postal válido." -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Introduzca un número telefónico válido." - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Introduzca un número SoFi válido." @@ -3022,15 +3479,15 @@ msgid "Zuid-Holland" msgstr "Holanda Meridional" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Introduzca un número de seguridad social Noruego válido." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Este campo requiere 8 dígitos." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Este campo requiere 11 dígitos." @@ -3062,7 +3519,7 @@ #: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." msgstr "" -"Código de verificación de Número Nacional de Registro de negocios (REGON) " +"Código de verificación de Número Nacional de Registro de Negocios (REGON) " "inválido." #: contrib/localflavor/pl/forms.py:148 @@ -3133,6 +3590,14 @@ msgid "West Pomerania" msgstr "Pomerania Occidental" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Introduzca un zip code en formato XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Los números telefónicos deben ser de 9 dígitos o comenzar con + o 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Introduzca un CIF válido." @@ -3153,6 +3618,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Introduzca un código postal válido en formato XXXXXX" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Introduzca un número de organización sueco válido." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Introduzca un número de identidad personal sueco válido." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "No se admiten números de co-ordinación" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Introduzca un código postal sueco en formato XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Estocolmo" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergrötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Escania" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banska Bystrica" @@ -3785,19 +4350,44 @@ msgid "Wales" msgstr "Gales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Los números telefónicos deben respetar el formato XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Introduzca un Número de Seguridad Social en formato XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Introduzca un estado de EE.UU. o un territorio." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado de los EE.UU. (dos letras mayúsculas)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Número de teléfono" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Introduzca un número CI válido en formato X.XXX.XXX-X,XXXXXXX-X o XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Introduzca un número CI válido." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" -msgstr "Introduzca un número ID de Sudáfrica válido." - -#: contrib/localflavor/za/forms.py:54 +msgstr "Introduzca un número de ID de Sudáfrica válido." + +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Introduzca un código postal de Sudáfrica válido." @@ -3837,6 +4427,10 @@ msgid "Western Cape" msgstr "Western Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "mensaje lazy" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirigir desde" @@ -3875,7 +4469,7 @@ #: contrib/sessions/models.py:47 msgid "session data" -msgstr "datos de sesión" +msgstr "datos de la sesión" #: contrib/sessions/models.py:48 msgid "expire date" @@ -3901,61 +4495,224 @@ msgid "sites" msgstr "sitios" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Este valor debe ser un número entero." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Este valor debe ser True o False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Introduzca un valor válido." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Introduzca una URL válida." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "La URL parece ser un enlace roto." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Introduzca un 'slug' válido consistente de letras, números o guiones." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Introduzca una dirección IPv4 válida" + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Introduzca sólo dígitos separados por comas." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Asegúrese de que este valor sea %(limit_value)s (actualmente es %(show_value)" +"s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Asegúrese de que este valor sea menor o igual a %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Asegúrese de que este valor sea mayor o igual a %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Asegúrese de que este valor tenga al menos %(limit_value)d caracteres (tiene " +"%(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Asegúrese de que este valor tenga como máximo %(limit_value)d caracteres " +"(tiene %(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" +"%(field_name)s debe ser único/a para un %(lookup)s %(date_field)s " +"determinado." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Ya existe un/a %(model_name)s con este/a %(field_label)s." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "El valor %r no es una opción válida." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Este campo no puede ser nulo." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Introduzca sólo dígitos separados por comas." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Este campo no puede estar en blanco." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Campo tipo: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Entero" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Este valor debe ser un número entero." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Este valor debe ser True o False." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Booleano (Verdadero o Falso)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Cadena (máximo %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Enteros separados por comas" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Fecha (sin hora)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Fecha no válida: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Introduzca un valor de fecha/hora válido en formato AAAA-MM-DD HH:MM[:ss[." "uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Fecha (con hora)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Este valor debe ser un número decimal." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Número decimal" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Dirección de correo electrónico" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Ruta de archivo" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Este valor debe ser un valor en representación de punto flotante." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Número de punto flotante" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Entero grande (8 bytes)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Este valor debe ser None, True o False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (Verdadero, Falso o Nulo)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Texto" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Hora" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Introduzca un valor de hora válido en formato HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "Texto XML" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "No existe un modelo %(model)s con una clave primaria %(pk)r." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Clave foránea (el tipo está determinado por el campo relacionado)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "Relación uno-a-uno" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Relación muchos-a-muchos" + +#: db/models/fields/related.py:1000 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenga presionada \"Control\" (\"Command\" en una Mac) para seleccionar " "más de uno." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3967,87 +4724,59 @@ "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " "válidos." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Este campo es obligatorio." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Introduzca un valor válido." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Asegúrese de que este valor tenga como máximo %(max)d caracteres (tiene %" -"(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Asegúrese de que este valor tenga al menos %(min)d caracteres (tiene %" -"(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Introduzca un número entero." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Asegúrese de que este valor sea menor o igual a %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Asegúrese de que este valor sea mayor o igual a %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Introduzca un número." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Asegúrese de que no existan en total mas de %s dígitos." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Asegúrese de que no existan mas de %s lugares decimales." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Asegúrese de que no existan mas de %s dígitos antes del punto decimal." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Introduzca una fecha válida." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Introduzca un valor de hora válido." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Introduzca un valor de fecha/hora válido." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se envió un archivo. Verifique el tipo de codificación en el formulario." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "No se envió ningún archivo." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "El archivo enviado está vacío." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4055,70 +4784,41 @@ "Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracteres " "(tiene %(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -"Envíe una imagen válida. El archivo que ha enviado no era una imagen o se " -"trataba de una imagen corrupta." - -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Introduzca una URL válida." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "La URL parece ser un enlace roto." - -#: forms/fields.py:625 forms/fields.py:703 +"Seleccione una imagen válida. El archivo que ha seleccionado no es una " +"imagen o es un un archivo de imagen corrupto." + +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Seleccione una opción válida. %(value)s no es una de las opciones " "disponibles." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1002 msgid "Enter a list of values." msgstr "Introduzca una lista de valores." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Introduzca una dirección IPv4 válida" - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "Introduzca un 'slug' válido consistente de letras, números o guiones." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Ordenar" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "" -"%(field_name)s debe ser único/a para un %(lookup)s %(date_field)s " -"determinado." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "Ya existe un/a %(model_name)s con este/a %(field_label)s." - -#: forms/models.py:594 +#: forms/models.py:562 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Por favor, corrija la información duplicada en %(field)s." -#: forms/models.py:598 +#: forms/models.py:566 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" "Por favor corrija la información duplicada en %(field)s, que debe ser única." -#: forms/models.py:604 +#: forms/models.py:572 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4127,54 +4827,55 @@ "Por favor corrija la información duplicada en %(field_name)s que debe ser " "única para el %(lookup)s en %(date_field)s." -#: forms/models.py:612 +#: forms/models.py:580 msgid "Please correct the duplicate values below." msgstr "Por favor, corrija los valores duplicados detallados mas abajo." -#: forms/models.py:867 +#: forms/models.py:855 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" -"La clave foránea del modelo inline no coincide con la de la instancia padre." - -#: forms/models.py:930 +"La clave foránea del modelo inline no coincide con la clave primaria de la " +"instancia padre." + +#: forms/models.py:921 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" -"Seleccione una opción válida. Esa opción no es una de las opciones " +"Seleccione una opción válida. La opción seleccionada no es una de las " "disponibles." -#: forms/models.py:1004 +#: forms/models.py:1003 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "" "Seleccione una opción válida. %s no es una de las opciones disponibles." -#: forms/models.py:1006 +#: forms/models.py:1005 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" no es un valor válido para una clave primaria." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:776 msgid "yes,no,maybe" msgstr "si,no,talvez" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:807 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:809 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:811 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:812 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4383,7 +5084,7 @@ msgid "Dec." msgstr "Dic." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "o" @@ -4437,33 +5138,44 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "j N Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "j N Y P" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "P" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" msgstr "j \\de F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "Se creó con éxito %(verbose_name)s." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "Se actualizó con éxito %(verbose_name)s." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "Se eliminó %(verbose_name)s." + +#: contrib/admin/options.py:1040 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "de %(count)d seleccionados" +msgstr[1] "de %(count)d seleccionados" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -6,44 +6,85 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-10-06 14:18-0300\n" -"PO-Revision-Date: 2007-07-14 14:36-0300\n" +"POT-Creation-Date: 2010-05-04 22:01-0300\n" +"PO-Revision-Date: 2010-05-04 22:10-0300\n" "Last-Translator: Ramiro Morales \n" "Language-Team: Django-I18N \n" +"Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.0.1\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "%s disponibles" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Seleccionar todos" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Agregar" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Eliminar" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "%s elegidos" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Seleccione los items a agregar y haga click en " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Eliminar todos" +#: contrib/admin/media/js/actions.js:18 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "%(sel)s de %(cnt)s seleccionado/a" +msgstr[1] "%(sel)s de %(cnt)s seleccionados/as" + +#: contrib/admin/media/js/actions.js:109 +#: contrib/admin/media/js/actions.min.js:5 +msgid "" +"You have unsaved changes on individual editable fields. If you run an " +"action, your unsaved changes will be lost." +msgstr "" +"Tiene modificaciones sin guardar en campos modificables individuales. Si " +"ejecuta una acción las mismas se perderán." + +#: contrib/admin/media/js/actions.js:121 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, but you haven't saved your changes to " +"individual fields yet. Please click OK to save. You'll need to re-run the " +"action." +msgstr "" +"Ha seleccionado una acción, pero todavía no ha grabado las modificaciones " +"que ha realizado en campos individuales. Por favor haga click en Aceptar " +"para grabarlas. Necesitará ejecutar la acción nuevamente." + +#: contrib/admin/media/js/actions.js:123 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, and you haven't made any changes on individual " +"fields. You're probably looking for the Go button rather than the Save " +"button." +msgstr "" +"Ha seleccionado una acción pero no ha realizado ninguna modificación en " +"campos individuales. Es probable que lo que necesite usar en realidad sea el " +"botón Ejecutar y no el botón Guardar." + #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 msgid "" @@ -57,62 +98,63 @@ msgid "S M T W T F S" msgstr "D L M M J V S" +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Mostrar" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Ocultar" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Domingo Lunes Martes Miércoles Jueves Viernes Sábado" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Mostrar" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Ocultar" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Ahora" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Reloj" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Elija una hora" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Medianoche" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6 a.m." -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Mediodía" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Cancelar" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Hoy" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Calendario" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Ayer" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Mañana" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es_AR/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/es_AR/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/es_AR/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,29 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'j N Y' +TIME_FORMAT = r'H:i:s' +DATETIME_FORMAT = r'j N Y H:i:s' +YEAR_MONTH_FORMAT = r'F Y' +MONTH_DAY_FORMAT = r'j \de F' +SHORT_DATE_FORMAT = r'd/m/Y' +SHORT_DATETIME_FORMAT = r'd/m/Y H:i' +FIRST_DAY_OF_WEEK = 0 # 0: Sunday, 1: Monday +DATE_INPUT_FORMATS = ( + '%d/%m/%Y', # '31/12/2009' + '%d/%m/%y', # '31/12/09' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d/%m/%Y %H:%M:%S', + '%d/%m/%Y %H:%M', + '%d/%m/%y %H:%M:%S', + '%d/%m/%y %H:%M', +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/et/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/et/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/et/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'G:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd.m.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/eu/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/eu/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/eu/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'Yeko M\re\n d\a' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +SHORT_DATE_FORMAT = 'Y M j' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fa/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fa/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/fa/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'G:i:s' +DATETIME_FORMAT = 'j F Y، ساعت G:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'Y/n/j' +SHORT_DATETIME_FORMAT = 'Y/n/j،‏ G:i:s' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fi/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/fi/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fi/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/fi/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/fi/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -6,9 +6,9 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-24 14:45+0300\n" +"POT-Creation-Date: 2010-03-27 16:17+0200\n" "PO-Revision-Date: 2007-09-15 00:34+0300\n" -"Last-Translator: Leo Honkanen \n" +"Last-Translator: Ville Säävuori \n" "Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,215 +22,235 @@ msgstr "arabia" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "bulgaria" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "bengali" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "bulgaria" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "katalaani" +msgid "Bosnian" +msgstr "bosnia" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "katalaani" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "tšekki" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "wales" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "tanska" +msgid "Welsh" +msgstr "wales" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "tanska" + +#: conf/global_settings.py:52 msgid "German" msgstr "saksa" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "kreikka" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "englanti" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "espanja" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "viro" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "Argentiinan espanja" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "viro" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "baski" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "persia" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "suomi" -#: conf/global_settings.py:60 -msgid "French" -msgstr "ranska" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "irlanti" +msgid "French" +msgstr "ranska" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "galicia" +msgid "Frisian" +msgstr "friisi" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "unkari" +msgid "Irish" +msgstr "irlanti" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "galicia" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "heprea" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "kroatia" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "islanti" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "italia" +msgid "Hungarian" +msgstr "unkari" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "islanti" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "italia" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "japani" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "georgia" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "korea" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "latvia" - #: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "liettua" +msgid "Korean" +msgstr "korea" #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "makedonia" +msgid "Lithuanian" +msgstr "liettua" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "hollanti" +msgid "Latvian" +msgstr "latvia" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "norja" +msgid "Macedonian" +msgstr "makedonia" #: conf/global_settings.py:79 +msgid "Dutch" +msgstr "hollanti" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "norja" + +#: conf/global_settings.py:81 msgid "Polish" msgstr "puola" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "portugali" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "brasilian portugali" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "romania" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "venäjä" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "slovakia" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "slovenia" -#: conf/global_settings.py:86 +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "albaani" + +#: conf/global_settings.py:89 msgid "Serbian" msgstr "serbia" -#: conf/global_settings.py:87 +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "serbian latina" + +#: conf/global_settings.py:91 msgid "Swedish" msgstr "ruotsi" -#: conf/global_settings.py:88 +#: conf/global_settings.py:92 msgid "Tamil" msgstr "tamili" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "thain kieli" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "turkki" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "ukraina" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "vietnam" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "kiina (yksinkertaistettu)" -#: conf/global_settings.py:94 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "kiina (perinteinen)" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Onnistuneesti poistettu %(count)d \"%(items)s\"-kohdetta." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1025 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1097 msgid "Are you sure?" msgstr "Oletko varma?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Poista valitut \"%(verbose_name_plural)s\"-kohteet" @@ -269,19 +289,19 @@ msgid "This year" msgstr "Tänä vuonna" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "Yes" msgstr "Kyllä" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "No" msgstr "Ei" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:470 msgid "Unknown" msgstr "Tuntematon" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:19 msgid "Action:" msgstr "Toiminto:" @@ -313,104 +333,127 @@ msgid "log entries" msgstr "lokimerkinnät" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:140 contrib/admin/options.py:155 msgid "None" msgstr "Ei arvoa" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:558 #, python-format msgid "Changed %s." msgstr "Muokattu: %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:587 +#: contrib/admin/options.py:558 contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:840 +#: forms/models.py:556 msgid "and" msgstr "ja" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:563 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Lisätty %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:567 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Muutettu %(list)s kohteelle %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:572 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Poistettu %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:576 msgid "No fields changed." msgstr "Ei muutoksia kenttiin." -#: contrib/admin/options.py:598 contrib/auth/admin.py:67 +#: contrib/admin/options.py:642 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" on lisätty." -#: contrib/admin/options.py:602 contrib/admin/options.py:635 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:646 contrib/admin/options.py:679 msgid "You may edit it again below." msgstr "Voit muokata sitä edelleen alla." -#: contrib/admin/options.py:612 contrib/admin/options.py:645 +#: contrib/admin/options.py:656 contrib/admin/options.py:689 #, python-format msgid "You may add another %s below." msgstr "Uusi %s on lisättävissä alla." -#: contrib/admin/options.py:633 +#: contrib/admin/options.py:677 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" on muutettu." -#: contrib/admin/options.py:641 +#: contrib/admin/options.py:685 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" on lisätty. Voit muokata sitä uudelleen alla." -#: contrib/admin/options.py:772 +#: contrib/admin/options.py:739 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:757 +msgid "No action selected." +msgstr "Ei toimintoa valittuna." + +#: contrib/admin/options.py:837 #, python-format msgid "Add %s" msgstr "Lisää %s" -#: contrib/admin/options.py:803 contrib/admin/options.py:1003 +#: contrib/admin/options.py:863 contrib/admin/options.py:1077 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s perusavaimella %(key)r ei ole olemassa." -#: contrib/admin/options.py:860 +#: contrib/admin/options.py:928 #, python-format msgid "Change %s" msgstr "Muokkaa %s" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:973 msgid "Database error" msgstr "Tietokantavirhe" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:1009 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s on muokattu." msgstr[1] "%(count)s \"%(name)s\"-kohdetta on muokattu." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1036 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "valittuna (%(count)d mahdollisesta)" +msgstr[1] "valittuna (%(count)d mahdollisesta)" + +#: contrib/admin/options.py:1038 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s valittu" +msgstr[1] "Kaikki %(total_count)s valittu" + +#: contrib/admin/options.py:1090 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" on poistettu." -#: contrib/admin/options.py:1054 +#: contrib/admin/options.py:1127 #, python-format msgid "Change history: %s" msgstr "Muokkaushistoria: %s" -#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -418,11 +461,11 @@ "Käyttäjätunnus tai salasana ei kelpaa. Huomaa, että isot ja pienet kirjaimet " "ovat merkitseviä." -#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Kirjaudu uudelleen sisään, sillä istuntosi on vanhentunut." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -430,62 +473,52 @@ "Selaimesi ei vaikuta sallivan evästeitä. Muuta asetukset sallimaan evästeet, " "lataa tämä sivu uudelleen ja yritä uudestaan." -#: contrib/admin/sites.py:301 contrib/admin/sites.py:307 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Käyttäjätunnuksessa ei saa olla '@'-merkkiä." -#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Sähköpostiosoitteesi ei ole käyttäjätunnuksesi. Kokeile '%s'." -#: contrib/admin/sites.py:360 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Sivuston ylläpito" -#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Kirjaudu sisään" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "%s ylläpito" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Pvm:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Klo:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Tällä hetkellä:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Muokkaa:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Etsi" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Lisää seuraava" @@ -500,17 +533,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -547,34 +580,47 @@ msgid "Go" msgstr "Suorita" +#: contrib/admin/templates/admin/actions.html:10 +msgid "Click here to select the objects across all pages" +msgstr "Klikkaa tästä valitaksesi kohteet kaikilta sivuilta" + +#: contrib/admin/templates/admin/actions.html:10 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Valitse kaikki %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:12 +msgid "Clear selection" +msgstr "Tyhjennä valinta" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Tervetuloa," -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Ohjeita" -#: contrib/admin/templates/admin/base.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Vaihda salasana" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Kirjaudu ulos" @@ -586,41 +632,42 @@ msgid "Django administration" msgstr "Djangon ylläpito" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Lisää" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Muokkaushistoria" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Näytä lopputulos" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Korjaa allaoleva virhe." msgstr[1] "Korjaa allaolevat virheet." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:60 #, python-format msgid "Add %(name)s" msgstr "Lisää %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:79 msgid "Filter" msgstr "Suodatin" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:297 msgid "Delete" msgstr "Poista" @@ -667,10 +714,10 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" "Haluatko varmasti poistaa valitut (%(object_name)s) kohteet? Myös seuraavat " -"kohteet poistettaisiin samalla:" +"kohteet ja niihin liittyvät kohteet poistettaisiin samalla:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -732,15 +779,9 @@ msgstr "Käyttäjä" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Tapahtuma" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j.n.Y G:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -753,6 +794,11 @@ msgid "Show all" msgstr "Näytä kaikki" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Tallenna ja poistu" + #: contrib/admin/templates/admin/search_form.html:8 msgid "Search" msgstr "Haku" @@ -769,10 +815,6 @@ msgid "%(full_result_count)s total" msgstr "yhteensä %(full_result_count)s" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Tallenna ja poistu" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Tallenna uutena" @@ -785,7 +827,7 @@ msgid "Save and continue editing" msgstr "Tallenna välillä ja jatka muokkaamista" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -793,33 +835,39 @@ "Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita " "käyttäjän tietoja." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Käyttäjätunnus" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Salasana" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Salasana toistamiseen" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Syötä käyttäjän %(username)s uusi salasana." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Salasana" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Salasana toistamiseen" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Lisää toinen %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Poista" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Poista?" @@ -833,9 +881,9 @@ msgstr "Kirjaudu uudelleen sisään" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Salasanan vaihtaminen" @@ -848,7 +896,7 @@ msgid "Your password was changed." msgstr "Salasanasi on vaihdettu." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -856,21 +904,17 @@ "Syötä vanha salasanasi varmistukseksi, ja syötä sitten uusi salasanasi kaksi " "kertaa, jotta se tulee varmasti oikein." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Vanha salasana:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Uusi salasana:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Varmista uusi salasana:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Vanha salasana" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Uusi salasana" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Vaihda salasana" @@ -909,6 +953,14 @@ "Syötä uusi salasanasi kaksi kertaa, jotta voimme varmistaa että syötit sen " "oikein." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Uusi salasana:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Varmista uusi salasana:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Salasanan nollaus ei onnistunut" @@ -976,7 +1028,7 @@ msgid "Reset my password" msgstr "Nollaa salasanani" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:240 msgid "All dates" msgstr "Kaikki päivät" @@ -990,152 +1042,71 @@ msgid "Select %s to change" msgstr "Valitse muokattava %s" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "sivusto" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "mallipohjan nimi" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "tagi:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "suodatin:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "näkymä:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Sovellusta %r ei löydy" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Sovelluksesta %(app_label)r ei löydy mallia %(model_name)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "tähän liittyvä `%(app_label)s.%(data_type)s`-kohde" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "malli:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "tähän liittyvät `%(app_label)s.%(object_name)s`-kohteet" -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "kaikki %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "%s-kohteiden lukumäärä" -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "%s-kohteiden kentät" -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 -msgid "Integer" -msgstr "Kokonaisluku" - -#: contrib/admindocs/views.py:316 -msgid "Boolean (Either True or False)" -msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)" - -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Merkkijono (enintään %(max_length)s merkkiä)" - -#: contrib/admindocs/views.py:318 -msgid "Comma-separated integers" -msgstr "Pilkulla erotetut kokonaisluvut" - -#: contrib/admindocs/views.py:319 -msgid "Date (without time)" -msgstr "Päivämäärä (ilman kellonaikaa)" - -#: contrib/admindocs/views.py:320 -msgid "Date (with time)" -msgstr "Päivämäärä ja kellonaika" - -#: contrib/admindocs/views.py:321 -msgid "Decimal number" -msgstr "Desimaaliluku" - -#: contrib/admindocs/views.py:322 -msgid "E-mail address" -msgstr "Sähköpostiosoite" - -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 -msgid "File path" -msgstr "Tiedostopolku" - -#: contrib/admindocs/views.py:325 -msgid "Floating point number" -msgstr "Liukuluku" - -#: contrib/admindocs/views.py:329 contrib/comments/models.py:60 -msgid "IP address" -msgstr "IP-osoite" - -#: contrib/admindocs/views.py:331 -msgid "Boolean (Either True, False or None)" -msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)" - -#: contrib/admindocs/views.py:332 -msgid "Relation to parent model" -msgstr "Relaatio emomalliin" - -#: contrib/admindocs/views.py:333 -msgid "Phone number" -msgstr "Puhelinnumero" - -#: contrib/admindocs/views.py:338 -msgid "Text" -msgstr "Tekstiä" - -#: contrib/admindocs/views.py:339 -msgid "Time" -msgstr "Kellonaika" - -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL-osoite" - -#: contrib/admindocs/views.py:341 -msgid "U.S. state (two uppercase letters)" -msgstr "USA:n osavaltio (suuraakkosin, kaksi kirjainta)" - -#: contrib/admindocs/views.py:342 -msgid "XML text" -msgstr "XML-teksti" - -#: contrib/admindocs/views.py:368 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ei näytä olevan urlpattern-olio" @@ -1206,78 +1177,74 @@ msgid "As above, but opens the admin page in a new window." msgstr "Kuten yllä, mutta avaa ylläpitosivun uuteen ikkunaan." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Henkilökohtaiset tiedot" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Oikeudet" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Tärkeät päivämäärät" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Ryhmät" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Uusi käyttäjä" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Salasana muutettu onnistuneesti." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Vaihda salasana: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Käyttäjätunnus" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" -" Vaaditaan. Enintään 30 kirjanta (A-Z, a-z), numeroa (0-9) tai alaviivaa (_)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." +" Vaaditaan. Enintään 30 merkkiä. Vain kirjaimet, numerot ja @/./+/-/_ ovat sallittuja." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." msgstr "" -"Tässä voidaan käyttää vain kirjaimia (A-Z, a-z), numeroita (0-9) ja " -"alaviivoja (_)." +"Tässä voidaan käyttää vain kirjaimia, numeroita ja @/./+/-/_ merkkejä." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Salasanan vahvistaminen" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Käyttäjätunnus on jo rekisteröity." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Salasanat eivät täsmää." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Tämä käyttäjätili ei ole voimassa." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." msgstr "" "Selaimesi ei näytä sallivan evästeitä. Sisäänkirjautuminen vaatii evästeen." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Sähköposti" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1285,72 +1252,70 @@ "Sähköpostiosoitetta vastaavaa käyttäjätunnusta ei löydy. Oletko varmasti jo " "rekisteröitynyt?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Salasanan nollaus sivustolla %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Uusi salasana" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Uusi salasana uudelleen" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Vanha salasana" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Vanha salasana on virheellinen. Yritä uudelleen." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nimi" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "tunniste" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "oikeus" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "oikeudet" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "ryhmä" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "ryhmät" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "käyttäjätunnus" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +" Vaaditaan. Enintään 30 merkkiä. Vain kirjaimet, numerot ja @/./+/-/_ ovat sallittuja." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "etunimi" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "sukunimi" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "sähköposti" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "salasana" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1358,19 +1323,19 @@ "Syötä muodossa '[algo]$[suola]$[heksa-digest]' tai käytä muutoslomaketta." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "ylläpitäjä" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Määrittää, pääseekö käyttäjä tähän sivuston ylläpito-osioon." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "voimassa" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1378,26 +1343,26 @@ "Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin " "käytön poistamatta sitä." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "pääkäyttäjä" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "viimeisin kirjautuminen" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "liittynyt" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1405,39 +1370,77 @@ "Erikseen mainittujen oikeuksien lisäksi käyttäjä saa myös kaikki niiden " "ryhmien oikeudet, joiden jäsen hän on." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "käyttäjän oikeudet" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "käyttäjä" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "käyttäjät" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "viesti" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Kirjautunut ulos" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:416 msgid "Enter a valid e-mail address." msgstr "Syötä kelvollinen sähköpostiosoite." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Sisältö" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metatieto" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "merkitty" +msgstr[1] "merkitty" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Merkitse valitut kommentit" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "hyväksytty" +msgstr[1] "hyväksytty" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Hyväksy valitut kommentit" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "poistettu" +msgstr[1] "poistettu" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Poista valitut kommentit" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 kommentti %(count)s onnistuneesti." +msgstr[1] "%(count)s kommenttia %(action)s onnistuneesti." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1449,7 +1452,6 @@ msgstr "Sivuston %(site_name)s viimeisimmät kommentit" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nimi" @@ -1457,25 +1459,29 @@ msgid "Email address" msgstr "Sähköpostiosoite" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1128 +msgid "URL" +msgstr "URL-osoite" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Kommentti" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "Siivoa suusi! Sanaa \"%s\" ei saa käyttää tässä." msgstr[1] "Siivoa suusi! Sanoja \"%s\" ei saa käyttää tässä." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Jos syötät tähän kenttään jotain, kommenttisi luokitellaan roskapostiksi" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "sisältötyyppi" @@ -1504,6 +1510,10 @@ msgid "date/time submitted" msgstr "lähettämishetki" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:923 +msgid "IP address" +msgstr "IP-osoite" + #: contrib/comments/models.py:61 msgid "is public" msgstr "on julkinen" @@ -1586,7 +1596,6 @@ msgstr "Haluatko varmasti tehdä kommentista julkisen?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Hyväksy" @@ -1609,11 +1618,6 @@ msgid "Really remove this comment?" msgstr "Haluatko varmasti poistaa tämän kommentin?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Poista" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Kiitos poistamisesta" @@ -1644,39 +1648,6 @@ msgid "Preview" msgstr "Esikatsele" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Kommenttien valvontajono" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Ei valvottavia kommentteja" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Sähköposti" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Kirjautunut?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP-osoite" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Lähettämispvm" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "kyllä" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "ei" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Kiitos kommentista" @@ -1704,11 +1675,11 @@ msgid "or make changes" msgstr "tai tee muutoksia" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "mallin python-luokan nimi" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "sisältötyypit" @@ -1772,7 +1743,7 @@ msgid "flat pages" msgstr "tekstisivut" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1780,6 +1751,38 @@ "Pahoittelumme, mutta sessiosi on vanhentunut. Ole hyvä ja jatka lomakkeen " "täyttämistä tältä sivulta." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "Piste" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Geometria-arvoa ei annettu." @@ -1883,25 +1886,25 @@ msgid "yesterday" msgstr "eilen" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Syötä postinumero muodossa NNNN tai ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Tähän kenttään kelpaavat vain numerot." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Tähän kenttään vaaditaan 7 tai 8 numeroa." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Syötä validi CUIT joko XX-XXXXXXXX-X tai XXXXXXXXXXXX -muodossa." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Virheellinen CUIT." @@ -1941,8 +1944,8 @@ msgid "Vienna" msgstr "Wien" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Syötä postinumero muodossa XXXX." @@ -1950,19 +1953,19 @@ msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." msgstr "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Syötä nelinumeroinen postinumero." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Syötä postinumero muodossa XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Puhelinnumeron tulee olla muodossa XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1970,27 +1973,27 @@ "Select a valid brazilian state. That state is not one of the available " "states." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Virheellinen CPF-numero." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Tämä kenttä vaatii vähintään 11 ja enintään 14 merkkiä." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Virheellinen CNPJ-numero." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Tähän kenttään vaaditaan ainakin 14 numeroa." -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Syötä postinumero muodossa XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." @@ -2098,7 +2101,7 @@ msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2106,15 +2109,15 @@ "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Syötä oikea chileläinen RUT" -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "The Chilean RUT is not valid." @@ -2174,24 +2177,24 @@ msgid "Moravian-Silesian Region" msgstr "Moravian-Silesian Region" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Syötä postinumero muodossa XXXXX tai XXX XX." -#: contrib/localflavor/cz/forms.py:47 +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "Syötä henkilötunnus muodossa XXXXXX/XXXX tai XXXXXXXXXX." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" msgstr "" "Virheellinen valinnainen sukupuoli, valitse 'f' (nainen) tai 'm' (mies)" -#: contrib/localflavor/cz/forms.py:49 +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Syötä oikea henkilötunnus." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Syötä oikea IC-tunnus." @@ -2259,12 +2262,12 @@ msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Syötä postinumero muodossa XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2539,11 +2542,11 @@ msgid "Valencian Community" msgstr "Valencian Community" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Syötä validi postinumero väliltä ja muodossa 01XXX-52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2551,63 +2554,495 @@ "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Please enter a valid NIF, NIE, or CIF." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Please enter a valid NIF or NIE." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Invalid checksum for NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Invalid checksum for NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Invalid checksum for CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Invalid checksum for bank account number." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Syötä oikea suomalainen henkilötunnus." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Phone numbers must be in 0X XX XX XX XX format." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Enter a valid post code" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Syötä oikea puhelinnumero" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Enter a valid vehicle license plate number" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Enter a valid NIK/KTP number" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi Barat" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps Consulate" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Federal Government" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Syötä postinumero muodossa XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "The Icelandic identification number is not valid." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Syötä oikea postinumero." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Syötä oikea henkilötunnus." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Syötä oikea ALV-tunnus." @@ -2803,6 +3238,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Enter a valid Kuwaiti Civil ID number" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2931,15 +3370,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Syötä oikea postinumero" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Syötä oikea puhelinnumero" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Syötä ikea SoFi-numero" @@ -2991,15 +3426,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Syötä oikea norjalainen henkilötunnus." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Tähän kenttään vaaditaan 8 numeroa." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Tähän kenttään vaaditaan 11 numeroa." @@ -3097,6 +3532,14 @@ msgid "West Pomerania" msgstr "West Pomerania" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Enter a zip code in the format XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Phone numbers must have 9 digits, or start by + or 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Enter a valid CIF." @@ -3117,6 +3560,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Syötä postinumero muodossa XXXXXX." +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Enter a valid Swedish organisation number." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Enter a valid Swedish personal identity number." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Co-ordination numbers are not allowed." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Enter a Swedish postal code in the format XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banska Bystrica" @@ -3749,19 +4292,43 @@ msgid "Wales" msgstr "Scotland" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Enter a zip code in the format XXXXX or XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Phone numbers must be in XXX-XXX-XXXX format." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Enter a U.S. state or territory." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "USA:n osavaltio (suuraakkosin, kaksi kirjainta)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Puhelinnumero" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Enter a valid CI number." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Enter a valid South African ID number" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Enter a valid South African postal code" @@ -3801,6 +4368,10 @@ msgid "Western Cape" msgstr "Western Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "laiska viesti" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "ohjaa osoitteesta" @@ -3865,59 +4436,218 @@ msgid "sites" msgstr "sivustot" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Tarvitaan kokonaisluku." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Tarvitaan tosi (True) tai epätosi (False)." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Syötä oikea arvo." + +#: core/validators.py:87 forms/fields.py:517 +msgid "Enter a valid URL." +msgstr "Syötä oikea URL-osoite." + +#: core/validators.py:89 forms/fields.py:518 +msgid "This URL appears to be a broken link." +msgstr "Tämä URL-osoite on rikkinäinen linkki." + +#: core/validators.py:123 forms/fields.py:861 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja " +"tavuviivoja (_ -)." + +#: core/validators.py:126 forms/fields.py:854 +msgid "Enter a valid IPv4 address." +msgstr "Syötä kelvollinen IPv4-osoite." + +#: core/validators.py:129 db/models/fields/__init__.py:599 +msgid "Enter only digits separated by commas." +msgstr "Vain pilkulla erotetut kokonaisluvut kelpaavat tässä." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Tämän arvon on oltava %(limit_value)s (nyt %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:196 forms/fields.py:246 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Tämän arvon on oltava enintään %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:197 forms/fields.py:247 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Tämän luvun on oltava vähintään %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Tähän tarvitaan vähintään %(limit_value)d merkkiä (nyt on vain %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Tähän kelpaa enintään %(limit_value)d merkkiä (nyt on %(show_value)d)." + +#: db/models/base.py:818 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" +"\"%(field_name)s\"-kentän on oltava uniikki suhteessa: %(date_field)s %" +"(lookup)s." + +#: db/models/base.py:833 db/models/base.py:841 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s jolla on tämä %(field_label)s, on jo olemassa." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Arvo %r ei kelpaa." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Tämän kentän arvo ei voi olla \"null\"." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Vain pilkulla erotetut kokonaisluvut kelpaavat tässä." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Tämän kenttä ei voi olla tyhjä." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Kenttä tyyppiä: %(field_type)s" + +#: db/models/fields/__init__.py:478 db/models/fields/__init__.py:879 +#: db/models/fields/__init__.py:988 db/models/fields/__init__.py:999 +#: db/models/fields/__init__.py:1026 +msgid "Integer" +msgstr "Kokonaisluku" + +#: db/models/fields/__init__.py:482 db/models/fields/__init__.py:877 +msgid "This value must be an integer." +msgstr "Tarvitaan kokonaisluku." + +#: db/models/fields/__init__.py:517 +msgid "This value must be either True or False." +msgstr "Tarvitaan tosi (True) tai epätosi (False)." + +#: db/models/fields/__init__.py:519 +msgid "Boolean (Either True or False)" +msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)" + +#: db/models/fields/__init__.py:566 db/models/fields/__init__.py:1009 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Merkkijono (enintään %(max_length)s merkkiä)" + +#: db/models/fields/__init__.py:594 +msgid "Comma-separated integers" +msgstr "Pilkulla erotetut kokonaisluvut" + +#: db/models/fields/__init__.py:608 +msgid "Date (without time)" +msgstr "Päivämäärä (ilman kellonaikaa)" + +#: db/models/fields/__init__.py:612 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Päivämäärän pitää olla muodossa VVVV-KK-PP." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:613 #, python-format msgid "Invalid date: %s" msgstr "Päivämäärä %s ei kelpaa" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:694 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Ajankohdan pitää olla muodossa VVVV-KK-PP TT:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:696 +msgid "Date (with time)" +msgstr "Päivämäärä ja kellonaika" + +#: db/models/fields/__init__.py:762 msgid "This value must be a decimal number." msgstr "Tähän tarvitaan desimaaliluku." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:764 +msgid "Decimal number" +msgstr "Desimaaliluku" + +#: db/models/fields/__init__.py:819 +msgid "E-mail address" +msgstr "Sähköpostiosoite" + +#: db/models/fields/__init__.py:826 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Tiedostopolku" + +#: db/models/fields/__init__.py:849 msgid "This value must be a float." msgstr "Tämän luvun on oltava liukuluku." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:851 +msgid "Floating point number" +msgstr "Liukuluku" + +#: db/models/fields/__init__.py:910 +msgid "Big (8 byte) integer" +msgstr "Suuri (8-tavuinen) kokonaisluku" + +#: db/models/fields/__init__.py:939 msgid "This value must be either None, True or False." msgstr "Tähän tarvitaan tyhjä (None), tosi (True) tai epätosi (False)." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:941 +msgid "Boolean (Either True, False or None)" +msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)" + +#: db/models/fields/__init__.py:1032 +msgid "Text" +msgstr "Tekstiä" + +#: db/models/fields/__init__.py:1048 +msgid "Time" +msgstr "Kellonaika" + +#: db/models/fields/__init__.py:1052 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Ajan täytyy olla muodossa TT:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:792 +#: db/models/fields/__init__.py:1136 +msgid "XML text" +msgstr "XML-teksti" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Mallia %(model)s pääavaimella %(pk)r ei ole olemassa." + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "Vierasavain (tyyppi määräytyy liittyvän kentän mukaan)" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "Yksi-yhteen relaatio" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "Moni-moneen relaatio" + +#: db/models/fields/related.py:959 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" " Pidä \"Ctrl\"-näppäin (tai Macin \"Command\") pohjassa valitaksesi useita " "vaihtoehtoja." -#: db/models/fields/related.py:870 +#: db/models/fields/related.py:1020 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3925,82 +4655,58 @@ msgstr[0] "Syöttämäsi %(self)s-tunniste %(value)r ei kelpaa." msgstr[1] "Syöttämäsi %(self)s-tunnisteet %(value)r eivät kelpaa." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Tämä kenttä vaaditaan." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Syötä oikea arvo." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Tähän kelpaa enintään %(max)d merkkiä (nyt niitä on %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "Tähän tarvitaan vähintään %(min)d merkkiä (nyt on vain %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:195 msgid "Enter a whole number." msgstr "Syötä kokonaisluku." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Tämän luvun on oltava enintään %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Tämän luvun on oltava vähintään %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:225 forms/fields.py:245 msgid "Enter a number." msgstr "Syötä kokonaisluku." -#: forms/fields.py:227 +#: forms/fields.py:248 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Tässä luvussa voi olla yhteensä enintään %s numeroa." -#: forms/fields.py:228 +#: forms/fields.py:249 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Tässä luvussa saa olla enintään %s desimaalia." -#: forms/fields.py:229 +#: forms/fields.py:250 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Tässä luvussa saa olla enintään %s numeroa ennen desimaalipilkkua." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:311 forms/fields.py:826 msgid "Enter a valid date." msgstr "Syötä oikea päivämäärä." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:339 forms/fields.py:827 msgid "Enter a valid time." msgstr "Syötä oikea kellonaika." -#: forms/fields.py:361 +#: forms/fields.py:365 msgid "Enter a valid date/time." msgstr "Syötä oikea pvm/kellonaika." -#: forms/fields.py:447 +#: forms/fields.py:423 msgid "No file was submitted. Check the encoding type on the form." msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)." -#: forms/fields.py:448 +#: forms/fields.py:424 msgid "No file was submitted." msgstr "Yhtään tiedostoa ei ole lähetetty." -#: forms/fields.py:449 +#: forms/fields.py:425 msgid "The submitted file is empty." msgstr "Lähetetty tiedosto on tyhjä." -#: forms/fields.py:450 +#: forms/fields.py:426 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4008,68 +4714,37 @@ "Tähän tiedostonimeen kelpaa enintään %(max)d merkkiä (nyt niitä on %(length)" "d)." -#: forms/fields.py:483 +#: forms/fields.py:461 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" "Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Syötä oikea URL-osoite." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Tämä URL-osoite on rikkinäinen linkki." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:584 forms/fields.py:659 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Valitse oikea vaihtoehto. %(value)s ei ole vaihtoehtojen joukossa." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:991 +#: forms/fields.py:660 forms/fields.py:722 forms/models.py:989 msgid "Enter a list of values." msgstr "Syötä lista." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Syötä kelvollinen IPv4-osoite." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja " -"tavuviivoja (_ -)." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:293 forms/formsets.py:295 msgid "Order" msgstr "Järjestys" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "" -"\"%(field_name)s\"-kentän on oltava uniikki suhteessa: %(date_field)s %" -"(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s jolla on tämä %(field_label)s, on jo olemassa." - -#: forms/models.py:581 +#: forms/models.py:550 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Korjaa kaksoisarvo kentälle %(field)s." -#: forms/models.py:585 +#: forms/models.py:554 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Ole hyvä ja korjaa uniikin kentän %(field)s kaksoisarvo." -#: forms/models.py:591 +#: forms/models.py:560 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4078,50 +4753,50 @@ "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." -#: forms/models.py:599 +#: forms/models.py:568 msgid "Please correct the duplicate values below." msgstr "Korjaa allaolevat kaksoisarvot." -#: forms/models.py:855 +#: forms/models.py:842 msgid "The inline foreign key did not match the parent instance primary key." msgstr "Liittyvä perusavain ei vastannut vanhemman perusavainta." -#: forms/models.py:918 +#: forms/models.py:908 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta." +#: forms/models.py:990 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Valitse oikea vaihtoehto. %s ei löydy vaihtoehtojen joukosta." + #: forms/models.py:992 #, python-format -msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Valitse oikea vaihtoehto. %s ei löydy vaihtoehtojen joukosta." - -#: forms/models.py:994 -#, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" ei kelpaa perusavaimeksi." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "kyllä,ei,ehkä" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d tavu" msgstr[1] "%(size)d tavua" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f Kt" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f Mt" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f Gt" @@ -4330,7 +5005,7 @@ msgid "Dec." msgstr "joulu" -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "tai" @@ -4384,37 +5059,80 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j.n.Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j.n.Y H:i" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" -msgstr "G:i" - -#: utils/translation/trans_real.py:417 +msgstr "H:i" + +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "N Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "N j, Y" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s luotiin onnistuneesti." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s päivitettiin onnistuneesti." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s on poistettu." +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s:" + +#~ msgid "Old password:" +#~ msgstr "Vanha salasana:" + +#~ msgid "Relation to parent model" +#~ msgstr "Relaatio emomalliin" + +#~ msgid "Add user" +#~ msgstr "Uusi käyttäjä" + +#~ msgid "Comment moderation queue" +#~ msgstr "Kommenttien valvontajono" + +#~ msgid "No comments to moderate" +#~ msgstr "Ei valvottavia kommentteja" + +#~ msgid "Email" +#~ msgstr "Sähköposti" + +#~ msgid "Authenticated?" +#~ msgstr "Kirjautunut?" + +#~ msgid "IP Address" +#~ msgstr "IP-osoite" + +#~ msgid "Date posted" +#~ msgstr "Lähettämispvm" + +#~ msgid "yes" +#~ msgstr "kyllä" + +#~ msgid "no" +#~ msgstr "ei" + #~ msgid "DATE_WITH_TIME_FULL" #~ msgstr "N j, Y, P" @@ -4502,9 +5220,6 @@ #~ msgid "deletion date" #~ msgstr "poistamispäivä" -#~ msgid "moderator deletion" -#~ msgstr "valvojan poisto" - #~ msgid "moderator deletions" #~ msgstr "valvojien poistot" @@ -4641,9 +5356,6 @@ #~ msgid "The URL %s is a broken link." #~ msgstr "Osoite %s on rikkoutunut tai väärä linkki." -#~ msgid "Enter a valid U.S. state abbreviation." -#~ msgstr "Syötä USA:n osavaltion lyhenne." - #~ msgid "This field must match the '%s' field." #~ msgstr "Arvon täytyy olla sama kuin kentässä '%s'." @@ -4656,9 +5368,6 @@ #~ msgid "This field must be given if %(field)s is not %(value)s" #~ msgstr "Tämä kenttä pitää täyttää, jos %(field)s ei ole %(value)s." -#~ msgid "Duplicate values are not allowed." -#~ msgstr "Samaa arvoa ei voi käyttää kahdesti." - #~ msgid "This value must be between %(lower)s and %(upper)s." #~ msgstr "Tämän luvun on oltava välillä %(lower)s–%(upper)s." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fi/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/fi/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fi/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/fi/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/fi/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -9,7 +9,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-30 19:35+0300\n" "PO-Revision-Date: 2006-08-05 15:27+0300\n" -"Last-Translator: Ville Säävuori \n" +"Last-Translator: Ville Säävuori \n" "Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fi/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fi/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/fi/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'G.i.s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j.n.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fr/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/fr/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fr/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/fr/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/fr/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -2,12 +2,15 @@ # This file is distributed under the same license as the Django package. # Copyright (C) 2008 Django Software Foundation and individual contributors. # +# Stéphane Raimbault , 2009-2010. +# Claude Paroz , 2009 +# msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-01 12:35+0100\n" -"PO-Revision-Date: 2009-03-01 12:35+0100\n" +"POT-Creation-Date: 2010-04-26 15:44+0200\n" +"PO-Revision-Date: 2010-04-17 00:18+0200\n" "Last-Translator: Stéphane Raimbault \n" "Language-Team: French \n" "MIME-Version: 1.0\n" @@ -20,205 +23,239 @@ msgstr "Arabe" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Bulgare" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "Bengalî" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Bulgare" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "Catalan" +msgid "Bosnian" +msgstr "Bosniaque" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Catalan" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "Tchèque" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "Gallois" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "Dannois" +msgid "Welsh" +msgstr "Gallois" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dannois" + +#: conf/global_settings.py:52 msgid "German" msgstr "Allemand" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Grec" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Anglais" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "Espagnol" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estonien" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "Espagnol argentin" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Estonien" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "Basque" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "Perse" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "Finlandais" -#: conf/global_settings.py:60 -msgid "French" -msgstr "Français" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "Irlandais" +msgid "French" +msgstr "Français" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "Galicien" +msgid "Frisian" +msgstr "Frise" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Hongrois" +msgid "Irish" +msgstr "Irlandais" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "Galicien" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "Hébreu" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "Croate" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Islandais" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Italien" +msgid "Hungarian" +msgstr "Hongrois" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Islandais" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Italien" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "Japonais" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "Géorgien" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "Coréen" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Letton" - #: conf/global_settings.py:75 +msgid "Korean" +msgstr "Coréen" + +#: conf/global_settings.py:76 msgid "Lithuanian" msgstr "Lituanien" -#: conf/global_settings.py:76 +#: conf/global_settings.py:77 +msgid "Latvian" +msgstr "Letton" + +#: conf/global_settings.py:78 msgid "Macedonian" msgstr "Macédonien" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Dutch" msgstr "Hollandais" -#: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Norvégien" - -#: conf/global_settings.py:79 -msgid "Polish" -msgstr "Polonais" - #: conf/global_settings.py:80 -msgid "Portuguese" -msgstr "Portugais" +msgid "Norwegian" +msgstr "Norvégien" #: conf/global_settings.py:81 -msgid "Brazilian Portuguese" -msgstr "Portugais brésilien" +msgid "Polish" +msgstr "Polonais" #: conf/global_settings.py:82 -msgid "Romanian" -msgstr "Roumain" +msgid "Portuguese" +msgstr "Portugais" #: conf/global_settings.py:83 -msgid "Russian" -msgstr "Russe" +msgid "Brazilian Portuguese" +msgstr "Portugais brésilien" #: conf/global_settings.py:84 -msgid "Slovak" -msgstr "Slovaque" +msgid "Romanian" +msgstr "Roumain" #: conf/global_settings.py:85 -msgid "Slovenian" -msgstr "Slovène" +msgid "Russian" +msgstr "Russe" #: conf/global_settings.py:86 -msgid "Serbian" -msgstr "Serbe" +msgid "Slovak" +msgstr "Slovaque" #: conf/global_settings.py:87 -msgid "Swedish" -msgstr "Suédois" +msgid "Slovenian" +msgstr "Slovène" #: conf/global_settings.py:88 +msgid "Albanian" +msgstr "Albanais" + +#: conf/global_settings.py:89 +msgid "Serbian" +msgstr "Serbe" + +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "Serbe latin" + +#: conf/global_settings.py:91 +msgid "Swedish" +msgstr "Suédois" + +#: conf/global_settings.py:92 msgid "Tamil" msgstr "Tamoul" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "Télougou" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "Thaï" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "Turc" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "Ukrainien" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "Vietnamien" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "Chinois simplifié" -#: conf/global_settings.py:94 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "Chinois traditionnel" +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "%(count)d %(items)s supprimés avec succès." + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 +msgid "Are you sure?" +msgstr "Êtes-vous sûr ?" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Supprimer les %(verbose_name_plural)s sélectionnés" + #: contrib/admin/filterspecs.py:44 #, python-format msgid "" @@ -228,43 +265,47 @@ "

            Par %s :

            \n" "
              \n" -#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:91 -#: contrib/admin/filterspecs.py:146 contrib/admin/filterspecs.py:172 +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 msgid "All" msgstr "Tout" -#: contrib/admin/filterspecs.py:112 +#: contrib/admin/filterspecs.py:113 msgid "Any date" msgstr "Toutes les dates" -#: contrib/admin/filterspecs.py:113 +#: contrib/admin/filterspecs.py:114 msgid "Today" msgstr "Aujourd'hui" -#: contrib/admin/filterspecs.py:116 +#: contrib/admin/filterspecs.py:117 msgid "Past 7 days" msgstr "Les 7 derniers jours" -#: contrib/admin/filterspecs.py:118 +#: contrib/admin/filterspecs.py:119 msgid "This month" msgstr "Ce mois-ci" -#: contrib/admin/filterspecs.py:120 +#: contrib/admin/filterspecs.py:121 msgid "This year" msgstr "Cette année" -#: contrib/admin/filterspecs.py:146 forms/widgets.py:390 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Oui" -#: contrib/admin/filterspecs.py:146 forms/widgets.py:390 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Non" -#: contrib/admin/filterspecs.py:153 forms/widgets.py:390 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Inconnu" +#: contrib/admin/helpers.py:20 +msgid "Action:" +msgstr "Action :" + #: contrib/admin/models.py:19 msgid "action time" msgstr "heure de l'action" @@ -293,60 +334,60 @@ msgid "log entries" msgstr "entrées d'historique" -#: contrib/admin/options.py:129 contrib/admin/options.py:143 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "Aucun(e)" -#: contrib/admin/options.py:375 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "Modifié %s." -#: contrib/admin/options.py:375 contrib/admin/options.py:385 -#: contrib/comments/templates/comments/preview.html:15 forms/models.py:294 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:562 msgid "and" msgstr "et" -#: contrib/admin/options.py:380 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "%(name)s « %(object)s » ajouté." -#: contrib/admin/options.py:384 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "%(list)s modifié pour %(name)s « %(object)s »." -#: contrib/admin/options.py:389 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "%(name)s « %(object)s » supprimé." -#: contrib/admin/options.py:393 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Aucun champ modifié." -#: contrib/admin/options.py:454 contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "L'objet %(name)s « %(obj)s » a été ajouté avec succès." -#: contrib/admin/options.py:458 contrib/admin/options.py:491 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "Vous pouvez continuer l'édition ci-dessous." -#: contrib/admin/options.py:468 contrib/admin/options.py:501 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Vous pouvez ajouter un autre %s ci-dessous." -#: contrib/admin/options.py:489 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "L'objet %(name)s « %(obj)s » a été modifié avec succès." -#: contrib/admin/options.py:497 +#: contrib/admin/options.py:690 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -354,43 +395,70 @@ "L'objet %(name)s « %(obj)s » a été ajouté avec succès. Vous pouvez continuer " "l'édition ci-dessous." +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Des éléments doivent être sélectionnés afin d'appliquer les actions. Aucun " +"élément n'a été modifié." + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "Aucune action sélectionnée." + # Titre -#: contrib/admin/options.py:565 +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "Ajout %s" -#: contrib/admin/options.py:596 contrib/admin/options.py:710 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "L'objet %(name)s avec la clef primaire %(key)r n'existe pas." # Titre -#: contrib/admin/options.py:643 +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" -msgstr "Changement %s" - -#: contrib/admin/options.py:675 +msgstr "Modification de %s" + +#: contrib/admin/options.py:978 msgid "Database error" msgstr "Erreur de base de données" -#: contrib/admin/options.py:725 +#: contrib/admin/options.py:1014 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "%(count)s objet %(name)s a été modifié avec succès." +msgstr[1] "%(count)s objets %(name)s ont été modifiés avec succès." + +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s sélectionné" +msgstr[1] "Tous les %(total_count)s sélectionnés" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 sur %(cnt)s sélectionné" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "L'objet %(name)s « %(obj)s » a été supprimé avec succès." -#: contrib/admin/options.py:732 -msgid "Are you sure?" -msgstr "Êtes-vous sûr ?" - -#: contrib/admin/options.py:761 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "Historique des changements : %s" -#: contrib/admin/sites.py:15 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -399,11 +467,11 @@ "chacun de ces champs est sensible à la casse (différenciation des majuscules/" "minuscules)." -#: contrib/admin/sites.py:242 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Reconnectez-vous car votre session a expiré." -#: contrib/admin/sites.py:249 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -411,64 +479,54 @@ "Il semblerait que votre navigateur n'accepte pas les cookies. Activez-les, " "rechargez cette page puis essayez à nouveau." -#: contrib/admin/sites.py:265 contrib/admin/sites.py:271 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Les noms d'utilisateur ne peuvent contenir le caractère « @ »." -#: contrib/admin/sites.py:268 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Votre adresse électronique n'est pas votre nom d'utilisateur. Essayez « %s » " "à la place." -#: contrib/admin/sites.py:328 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Administration du site" -#: contrib/admin/sites.py:341 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Connexion" -#: contrib/admin/sites.py:388 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Administration %s" -#: contrib/admin/util.py:144 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s" - -#: contrib/admin/util.py:149 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :" - -#: contrib/admin/widgets.py:70 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Date :" -#: contrib/admin/widgets.py:70 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Heure :" -#: contrib/admin/widgets.py:94 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Actuellement :" -#: contrib/admin/widgets.py:94 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Modification :" -#: contrib/admin/widgets.py:123 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Recherche" -#: contrib/admin/widgets.py:230 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Ajouter un autre" @@ -483,16 +541,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:33 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:8 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -522,6 +581,27 @@ "administrateurs du site et sera corrigée dans les meilleurs délais. Merci " "pour votre patience." +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "Exécuter l'action sélectionnée" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Envoyer" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Cliquez ici pour sélectionner tous les objets sur l'ensemble des pages" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Sélectionner tous les %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Effacer la sélection" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format @@ -532,24 +612,24 @@ msgid "Welcome," msgstr "Bienvenue," -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentation" -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/auth/user/change_password.html:13 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Modifier votre mot de passe" -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Déconnexion" @@ -561,40 +641,42 @@ msgid "Django administration" msgstr "Administration de Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Ajouter" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Historique" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Voir sur le site" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/auth/user/change_password.html:22 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Corrigez l'erreur suivante." msgstr[1] "Corrigez les erreurs suivantes." -#: contrib/admin/templates/admin/change_list.html:16 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Ajouter %(name)s" -#: contrib/admin/templates/admin/change_list.html:26 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtre" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:246 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Supprimer" @@ -619,8 +701,33 @@ "s » ? Les éléments suivants sont liés à celui-ci et seront aussi supprimés :" #: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 msgid "Yes, I'm sure" -msgstr "Oui, j'en suis certain" +msgstr "Oui, je suis sûr" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "Supprimer plusieurs objets" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"Supprimer l'objet %(object_name)s provoquerait la suppression des objets qui " +"lui sont liés, mais votre compte ne possède pas la permission de supprimer " +"les types d'objets suivants :" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Voulez-vous vraiment supprimer les objets %(object_name)s sélectionnés ? " +"Tous les objets suivants et leurs éléments liés seront aussi supprimés :" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -652,6 +759,10 @@ msgid "None available" msgstr "Aucun(e) disponible" +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "Contenu inconnu" + #: contrib/admin/templates/admin/invalid_setup.html:7 msgid "" "Something's wrong with your database installation. Make sure the appropriate " @@ -679,15 +790,9 @@ msgstr "Utilisateur" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Action" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:404 -msgid "DATETIME_FORMAT" -msgstr "j F Y, G:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -700,9 +805,14 @@ msgid "Show all" msgstr "Tout afficher" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Enregistrer" + #: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Envoyer" +msgid "Search" +msgstr "Rechercher" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -716,10 +826,6 @@ msgid "%(full_result_count)s total" msgstr "%(full_result_count)s résultats" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Enregistrer" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Enregistrer en tant que nouveau" @@ -732,7 +838,7 @@ msgid "Save and continue editing" msgstr "Enregistrer et continuer les modifications" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -740,35 +846,41 @@ "Saisissez tout d'abord un nom d'utilisateur et un mot de passe. Vous pourrez " "ensuite modifier plus d'options." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Nom d'utilisateur" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:33 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Mot de passe" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Mot de passe (à nouveau)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -msgid "Enter the same password as above, for verification." -msgstr "Saisissez le même mot de passe que précédemment, par sécurité." - -#: contrib/admin/templates/admin/auth/user/change_password.html:26 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" "Saisissez un nouveau mot de passe pour l'utilisateur %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Mot de passe" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Mot de passe (à nouveau)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Saisissez le même mot de passe que précédemment, pour vérification." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Ajouter un objet %(verbose_name)s supplémentaire" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Supprimer" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Supprimer ?" @@ -782,9 +894,9 @@ msgstr "Connectez-vous à nouveau" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Modification de votre mot de passe" @@ -797,7 +909,7 @@ msgid "Your password was changed." msgstr "Votre mot de passe a été modifié." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -806,21 +918,17 @@ "nouveau mot de passe à deux reprises afin de vérifier qu'il est correctement " "saisi." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Ancien mot de passe :" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nouveau mot de passe :" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Confirmation du mot de passe :" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Ancien mot de passe" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nouveau mot de passe" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Modifier mon mot de passe" @@ -860,6 +968,14 @@ "Saisissez deux fois votre nouveau mot de passe afin de vérifier qu'il est " "correctement saisi." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nouveau mot de passe :" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Confirmation du mot de passe :" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Échec lors de la mise à jour du mot de passe" @@ -931,167 +1047,86 @@ msgid "Reset my password" msgstr "Réinitialiser mon mot de passe" -#: contrib/admin/templatetags/admin_list.py:285 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Toutes les dates" -#: contrib/admin/views/main.py:69 +#: contrib/admin/views/main.py:70 #, python-format msgid "Select %s" msgstr "Sélectionnez %s" -#: contrib/admin/views/main.py:69 +#: contrib/admin/views/main.py:70 #, python-format msgid "Select %s to change" msgstr "Sélectionnez l'objet %s à changer" -#: contrib/admin/views/template.py:36 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "site" -#: contrib/admin/views/template.py:38 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "template" -#: contrib/admindocs/views.py:57 contrib/admindocs/views.py:59 -#: contrib/admindocs/views.py:61 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "mot-clé :" -#: contrib/admindocs/views.py:90 contrib/admindocs/views.py:92 -#: contrib/admindocs/views.py:94 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filtre :" -#: contrib/admindocs/views.py:154 contrib/admindocs/views.py:156 -#: contrib/admindocs/views.py:158 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "vue :" -#: contrib/admindocs/views.py:186 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "L'application %r n'a pas été trouvée" -#: contrib/admindocs/views.py:193 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "" "Le modèle %(model_name)r n'a pas été trouvé dans l'application %(app_label)r" -#: contrib/admindocs/views.py:205 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "l'objet « %(app_label)s.%(data_type)s » en relation" -#: contrib/admindocs/views.py:205 contrib/admindocs/views.py:227 -#: contrib/admindocs/views.py:241 contrib/admindocs/views.py:246 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "modèle :" -#: contrib/admindocs/views.py:236 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "les objets « %(app_label)s.%(object_name)s » en relation" -#: contrib/admindocs/views.py:241 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "tous les %s" -#: contrib/admindocs/views.py:246 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "nombre de %s" -#: contrib/admindocs/views.py:251 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Champs sur les objets %s" -#: contrib/admindocs/views.py:314 contrib/admindocs/views.py:325 -#: contrib/admindocs/views.py:327 contrib/admindocs/views.py:333 -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:336 -msgid "Integer" -msgstr "Entier" - -#: contrib/admindocs/views.py:315 -msgid "Boolean (Either True or False)" -msgstr "Booléen (soit vrai ou faux)" - -#: contrib/admindocs/views.py:316 contrib/admindocs/views.py:335 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Chaîne de caractère (jusqu'à %(max_length)s)" - -#: contrib/admindocs/views.py:317 -msgid "Comma-separated integers" -msgstr "Des entiers séparés par une virgule" - -#: contrib/admindocs/views.py:318 -msgid "Date (without time)" -msgstr "Date (sans l'heure)" - -#: contrib/admindocs/views.py:319 -msgid "Date (with time)" -msgstr "Date (avec l'heure)" - -#: contrib/admindocs/views.py:320 -msgid "Decimal number" -msgstr "Nombre décimal" - -#: contrib/admindocs/views.py:321 -msgid "E-mail address" -msgstr "Adresse électronique" - -#: contrib/admindocs/views.py:322 contrib/admindocs/views.py:323 -#: contrib/admindocs/views.py:326 -msgid "File path" -msgstr "Chemin vers le fichier" - -#: contrib/admindocs/views.py:324 -msgid "Floating point number" -msgstr "Nombre à virgule flottante" - -#: contrib/admindocs/views.py:328 contrib/comments/models.py:58 -msgid "IP address" -msgstr "adresse IP" - -#: contrib/admindocs/views.py:330 -msgid "Boolean (Either True, False or None)" -msgstr "Booléen (soit vrai, faux ou nul)" - -#: contrib/admindocs/views.py:331 -msgid "Relation to parent model" -msgstr "Relation au modèle parent" - -#: contrib/admindocs/views.py:332 -msgid "Phone number" -msgstr "Numéro de téléphone" - -#: contrib/admindocs/views.py:337 -msgid "Text" -msgstr "Texte" - -#: contrib/admindocs/views.py:338 -msgid "Time" -msgstr "Heure" - -#: contrib/admindocs/views.py:339 contrib/comments/forms.py:19 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:340 -msgid "U.S. state (two uppercase letters)" -msgstr "État Américain (deux lettres majuscules)" - -#: contrib/admindocs/views.py:341 -msgid "XML text" -msgstr "Texte XML" - -#: contrib/admindocs/views.py:367 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ne semble pas être un objet urlpattern" @@ -1165,67 +1200,65 @@ "Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle " "fenêtre." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Information personnelle" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Permissions" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Dates importantes" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Groupes" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Ajouter l'utilisateur" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Mot de passe modifié avec succès" -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Modifier le mot de passe : %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:127 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" -"Requis. 30 caractères maximum, alphanumériques uniquement (lettres, " -"chiffres, et tirets bas _)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." +"Requis. 30 caractères maximum. Uniquement des lettres, nombres et les " +"caractères « @ », « . », « + », « - » et « _ »." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." msgstr "" -"Ce champ ne doit contenir que des lettres, des nombres et des tirets bas _." +"Cette valeur peut uniquement contenir des lettres, nombres et les caractères " +"« @ », « . », « + », « - » et « _ »." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Confirmation de votre mot de passe" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Un utilisateur avec ce nom existe déjà." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Les deux mots de passe ne correspondent pas." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Ce compte est inactif." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1233,11 +1266,11 @@ "Votre navigateur ne semble pas avoir activé les cookies. Les cookies sont " "nécessaires pour se connecter." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Courriel" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1245,72 +1278,71 @@ "Cette adresse électronique ne correspond à aucun compte utilisateur. Êtes-" "vous sûr de vous être enregistré ?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" -msgstr "Mot de passe mis à jour sur %s" - -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nouveau mot de passe" - -#: contrib/auth/forms.py:144 +msgstr "Mise à jour du mot de passe sur %s" + +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Confirmation du nouveau mot de passe" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Ancien mot de passe" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nom" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "nom de code" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "permission" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "permissions" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "groupe" -#: contrib/auth/models.py:91 contrib/auth/models.py:137 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "groupes" -#: contrib/auth/models.py:127 +#: contrib/auth/models.py:196 msgid "username" msgstr "nom d'utilisateur" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Requis. 30 caractères maximum. Uniquement des lettres, nombres et les " +"caractères « @ », « . », « + », « - » et « _ »." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "prénom" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:198 msgid "last name" msgstr "nom" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "adresse électronique" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:200 msgid "password" msgstr "mot de passe" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1318,19 +1350,19 @@ "Utilisez « [algo]$[salt]$[hexdigest] » ou le formulaire " "de changement de mot de passe." -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "statut équipe" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:202 msgid "active" msgstr "actif" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1338,11 +1370,11 @@ "Précise si l'utilisateur doit être considéré comme actif. Décochez ceci " "plutôt que de supprimer le compte." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "statut super-utilisateur" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1350,15 +1382,15 @@ "Précise que l'utilisateur possède toutes les permissions sans les assigner " "explicitement." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:204 msgid "last login" msgstr "dernière connexion" -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "date d'inscription" -#: contrib/auth/models.py:138 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1367,60 +1399,106 @@ "recevra aussi toutes les permissions de tous les groupes auxquels il " "appartient. " -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "permissions de l'utilisateur" -#: contrib/auth/models.py:143 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 msgid "user" msgstr "utilisateur" -#: contrib/auth/models.py:144 +#: contrib/auth/models.py:213 msgid "users" msgstr "utilisateurs" -#: contrib/auth/models.py:300 +#: contrib/auth/models.py:394 msgid "message" msgstr "message" -#: contrib/auth/views.py:50 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Déconnecté" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:428 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Entrez une adresse de courriel valide." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Contenu" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" -msgstr "Metadonnées" - -#: contrib/comments/forms.py:17 -#: contrib/comments/templates/comments/moderation_queue.html:34 +msgstr "Métadonnées" + +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "marqué" +msgstr[1] "marqués" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Marquer les commentaires sélectionnés" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "approuvé" +msgstr[1] "approuvés" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Approuver les commentaires sélectionnés" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "supprimé" +msgstr[1] "supprimés" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Supprimer les commentaires sélectionnés" + +# Nous avons artificiellement ajouté un « s » à l'action de la forme plurielle +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 commentaire a été %(action)s avec succès." +msgstr[1] "%(count)s commentaires ont été %(action)ss avec succès." + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "Commentaires sur %(site_name)s" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "Derniers commentaires sur %(site_name)s" + +#: contrib/comments/forms.py:93 msgid "Name" msgstr "Nom" -#: contrib/comments/forms.py:18 +#: contrib/comments/forms.py:94 msgid "Email address" msgstr "Adresse électronique" -#: contrib/comments/forms.py:20 -#: contrib/comments/templates/comments/moderation_queue.html:35 +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + +#: contrib/comments/forms.py:96 msgid "Comment" msgstr "Commentaire" -#: contrib/comments/forms.py:23 -msgid "" -"If you enter anything in this field your comment will be treated as spam" -msgstr "" -"Si vous saisissez quelque chose dans ce champ, votre commentaire sera " -"considéré comme étant indésirable" - -#: contrib/comments/forms.py:146 +#: contrib/comments/forms.py:175 #, 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." @@ -1428,45 +1506,61 @@ msgstr[1] "" "Attention à votre langage ! Les termes %s ne sont pas autorisés ici." -#: contrib/comments/models.py:23 +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" +"Si vous saisissez quelque chose dans ce champ, votre commentaire sera " +"considéré comme étant indésirable" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "type de contenu" + +#: contrib/comments/models.py:24 msgid "object ID" msgstr "ID de l'objet" -#: contrib/comments/models.py:50 +#: contrib/comments/models.py:52 msgid "user's name" msgstr "nom de l'utilisateur" -#: contrib/comments/models.py:51 +#: contrib/comments/models.py:53 msgid "user's email address" msgstr "adresse électronique de l'utilisateur" -#: contrib/comments/models.py:52 +#: contrib/comments/models.py:54 msgid "user's URL" msgstr "URL de l'utilisateur" -#: contrib/comments/models.py:54 +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 msgid "comment" msgstr "commentaire" -#: contrib/comments/models.py:57 +#: contrib/comments/models.py:59 msgid "date/time submitted" msgstr "date et heure soumises" -#: contrib/comments/models.py:59 +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "adresse IP" + +#: contrib/comments/models.py:61 msgid "is public" msgstr "est public" -#: contrib/comments/models.py:60 +#: contrib/comments/models.py:62 msgid "" "Uncheck this box to make the comment effectively disappear from the site." msgstr "" "Décochez cette case pour faire vraiment disparaître ce commentaire du site." -#: contrib/comments/models.py:62 +#: contrib/comments/models.py:64 msgid "is removed" msgstr "est supprimé" -#: contrib/comments/models.py:63 +#: contrib/comments/models.py:65 msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." @@ -1474,7 +1568,11 @@ "Cochez cette case si le commentaire est inadéquat. Un message type « Ce " "commentaire a été supprimé » sera affiché en lieu et place de celui-ci." -#: contrib/comments/models.py:115 +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "commentaires" + +#: contrib/comments/models.py:119 msgid "" "This comment was posted by an authenticated user and thus the name is read-" "only." @@ -1482,7 +1580,7 @@ "Ce commentaire a été posté par un utilisateur authentifié, le nom est donc " "en lecture seule." -#: contrib/comments/models.py:124 +#: contrib/comments/models.py:128 msgid "" "This comment was posted by an authenticated user and thus the email is read-" "only." @@ -1490,7 +1588,7 @@ "Ce commentaire a été posté par un utilisateur authentifié et le courriel est " "donc en lecture seule" -#: contrib/comments/models.py:149 +#: contrib/comments/models.py:153 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1505,6 +1603,22 @@ "\n" "http://%(domain)s%(url)s" +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "indicateur" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "date" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "indicateur de commentaire" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "indicateurs de commentaire" + #: contrib/comments/templates/comments/approve.html:4 msgid "Approve a comment" msgstr "Valider un commentaire" @@ -1514,7 +1628,6 @@ msgstr "Voulez-vous rendre ce commentaire public ?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Valider" @@ -1539,11 +1652,6 @@ msgid "Really remove this comment?" msgstr "Voulez-vous supprimer définitivement ce commentaire ?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Supprimer" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Merci pour cette suppression" @@ -1564,49 +1672,16 @@ msgid "Thanks for flagging" msgstr "Merci d'avoir signalé ce commentaire" -#: contrib/comments/templates/comments/form.html:16 -#: contrib/comments/templates/comments/preview.html:31 +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 msgid "Post" msgstr "Envoyer" -#: contrib/comments/templates/comments/form.html:17 -#: contrib/comments/templates/comments/preview.html:32 +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 msgid "Preview" msgstr "Prévisualiser" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Liste de modération des commentaires" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Aucun commentaire à modérer" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Courriel" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Authentifié ?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Adresse IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Date de soumission" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "oui" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "non" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Merci pour votre commentaire" @@ -1616,33 +1691,29 @@ msgstr "Merci pour votre commentaire" #: contrib/comments/templates/comments/preview.html:4 -#: contrib/comments/templates/comments/preview.html:12 +#: contrib/comments/templates/comments/preview.html:13 msgid "Preview your comment" msgstr "Prévisualiser votre commentaire" -#: contrib/comments/templates/comments/preview.html:10 +#: contrib/comments/templates/comments/preview.html:11 msgid "Please correct the error below" msgid_plural "Please correct the errors below" msgstr[0] "Veuillez corriger l'erreur suivante." msgstr[1] "Veuillez corriger les erreurs suivantes." -#: contrib/comments/templates/comments/preview.html:15 +#: contrib/comments/templates/comments/preview.html:16 msgid "Post your comment" msgstr "Envoyer votre commentaire" -#: contrib/comments/templates/comments/preview.html:15 +#: contrib/comments/templates/comments/preview.html:16 msgid "or make changes" msgstr "ou le modifier" -#: contrib/contenttypes/models.py:67 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "nom de la classe python du modèle" -#: contrib/contenttypes/models.py:71 -msgid "content type" -msgstr "type de contenu" - -#: contrib/contenttypes/models.py:72 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "types de contenu" @@ -1659,7 +1730,7 @@ "slashes." msgstr "" "Ce champ ne doit contenir que des lettres, des nombres, des tirets bas « _ », " -"des traits d'union, et des « / »." +"des traits d'union et des « / »." #: contrib/flatpages/admin.py:22 msgid "Advanced options" @@ -1707,7 +1778,7 @@ msgid "flat pages" msgstr "pages statiques" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1715,17 +1786,59 @@ "Nous sommes désolés, mais votre formulaire a expiré. Veuillez compléter le " "formulaire sur cette page." -#: contrib/gis/forms/fields.py:14 +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Le champ GIS -- convertit dans le type de spécification géométrique " +"d'OpenGIS." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Point" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Chaîne de segment" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Polygone" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Multipoint" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Chaîne multisegment" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Multipolygone" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Collection géométrique" + +#: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." -msgstr "Valeur géométrique manquante." - -#: contrib/gis/forms/fields.py:15 +msgstr "Acune valeur géométrique fournie." + +#: contrib/gis/forms/fields.py:18 msgid "Invalid geometry value." -msgstr "Valeur géométrique non valide" - -#: contrib/gis/forms/fields.py:16 +msgstr "Valeur géométrique non valide." + +#: contrib/gis/forms/fields.py:19 msgid "Invalid geometry type." -msgstr "Type de géométrie non valide" +msgstr "Type de géométrie non valide." + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" +"Une erreur est survenue lors de la transformation de l'objet géométrique " +"dans le SRID du champ de formulaire géométrique." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1737,7 +1850,7 @@ #: contrib/humanize/templatetags/humanize.py:19 msgid "nd" -msgstr "d" +msgstr "e" #: contrib/humanize/templatetags/humanize.py:19 msgid "rd" @@ -1812,25 +1925,25 @@ msgid "yesterday" msgstr "hier" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Saisissez un code postal au format NNNN ou ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Ce champ ne doit contenir que des nombres." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Ce champ requiert 7 ou 8 chiffres." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Saisissez un numéro CUIT au format XX-XXXXXXXX-X ou XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT non valide." @@ -1870,8 +1983,8 @@ msgid "Vienna" msgstr "Vienne" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Saisissez un code postal norvégien au format XXXX." @@ -1881,19 +1994,19 @@ "Saisissez un numéro de sécurité sociale autrichien valide au format XXXX " "XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Saisissez un code postal australien (4 chiffres)." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Saisissez un code postal brésilien au format XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Les numéros de téléphone doivent être au format XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1901,27 +2014,27 @@ "Sélectionnez un état brésilien valide. Cet état ne fait pas partie de ceux " "disponibles." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Numéro CPF non valide." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Ce champ requiert au plus 11 chiffres ou 14 caractères." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Numéro CNPJ non valide." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Ce champ requiert au minimum 14 chiffres" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Saisissez un code postal au format XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Saisissez un numéro de sécurité sociale canadien au format XXX-XXX-XXX." @@ -2030,7 +2143,7 @@ msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2038,15 +2151,15 @@ "Saisissez un numéro de passeport ou de carte d'identité suisse valide au " "format X1234567<0 ou 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Saisissez un RUT chilien valide." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Saisissez un RUT chilien valide au format XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Ce RUT chilien est non valide." @@ -2054,9 +2167,8 @@ msgid "Prague" msgstr "Prague" -# Ticket #10385 #: contrib/localflavor/cz/cz_regions.py:9 -msgid "Cenral Bohemian Region" +msgid "Central Bohemian Region" msgstr "Bohême du Centre" #: contrib/localflavor/cz/cz_regions.py:10 @@ -2107,25 +2219,25 @@ msgid "Moravian-Silesian Region" msgstr "Moravie-Silésie" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Saisissez un code postal au format XXXXX ou XXX XX." -#: contrib/localflavor/cz/forms.py:47 +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "Saisissez une date de naissance au format XXXXXX/XXXX ou XXXXXXXXXX." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" msgstr "" "Le paramètre optionnel du genre est non valide, les valeurs autorisées sont " "« f » et « m »" -#: contrib/localflavor/cz/forms.py:49 +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Saisissez une date de naissance valide." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Saisissez un numéro IC valide." @@ -2193,12 +2305,12 @@ msgid "Thuringia" msgstr "Thuringe" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Saisissez un code postal au format XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2473,74 +2585,508 @@ msgid "Valencian Community" msgstr "Communauté valencienne" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Saisissez un code postal dans l'intervalle et au format 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." msgstr "" "Saisissez un numéro de téléphone au format 6XXXXXXXX, 8XXXXXXXX ou 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Saisissez une adresse NIF, NIE ou CIF valide." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Saisissez un NIF ou NIE valide." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Mauvais checksum pour NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Mauvais checksum pour NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Mauvais checksum pour CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Saisissez un numéro de compte bancaire valide au format XXXXX-XXXX-XX-" "XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Somme de contrôle non valide pour le numéro de compte bancaire." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Saisissez un numéro de sécurité sociale finlandais." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Les numéros de téléphone doivent être au format 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Saisissez un code postal valide" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Saisissez un numéro de téléphone valide" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Saisissez un numéro de plaque d'immatriculation valide" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Saisissez un numéro NIK/KTP valide" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Java occidental" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Java central" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Java oriental" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan occidental" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan du sud" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan central" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan oriental" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Île Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Île Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Moluques" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Moluques du nord" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara occidental" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara oriental" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papouasie" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papouasie occidentale" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi occidental" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi du Sud" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi central" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi du Sud-Est" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi du Nord" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumaratera occidental" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera du Sud" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera du Nord" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Megelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +# http://en.wikipedia.org/wiki/Consular_corps +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps consulaire" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps diplomatique" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi du Nord" + +# NTT signifie Nusa Tenggara Timur +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Îles de Sulawesi du Nord" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Florès" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Gouvernement fédéral" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Saisissez un code postal au format XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "Saisissez un code postal islandais valide au format XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Le numéro d'identification islandais est non valide." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Saisissez un code postal valide." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Saisissez un numéro valide de Sécurité Sociale." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Saisissez un numéro de TVA valide." @@ -2736,6 +3282,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Saisissez un numéro d'identification civil koweïtien valide" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2864,15 +3414,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Saisissez un code postal valide." -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Saisissez un numéro de téléphone valide." - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Saisissez un numéro SoFi valide." @@ -2924,21 +3470,21 @@ msgid "Zuid-Holland" msgstr "Hollande-Méridionale" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Saisissez un numéro de sécurité sociale norvégien valide." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." -msgstr "Ce champ requiert 8 chiffres." - -#: contrib/localflavor/pe/forms.py:52 +msgstr "Ce champ requiert 8 chiffres." + +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." -msgstr "Ce champ requiert 11 chiffres." +msgstr "Ce champ requiert 11 chiffres." #: contrib/localflavor/pl/forms.py:38 msgid "National Identification Number consists of 11 digits." -msgstr "Le numéro national d'identification (NIN) comporte 11 chiffres." +msgstr "Le numéro national d'identification (NIN) comporte 11 chiffres." #: contrib/localflavor/pl/forms.py:39 msgid "Wrong checksum for the National Identification Number." @@ -2954,18 +3500,18 @@ msgid "Wrong checksum for the Tax Number (NIP)." msgstr "Somme de contrôle non valide du numéro de taxe (NIP)." -#: contrib/localflavor/pl/forms.py:111 -msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." msgstr "" -"Le numéro de registre du commerce national (REGON) comporte 7 ou 9 chiffres." - -#: contrib/localflavor/pl/forms.py:112 +"Le numéro de registre du commerce national (REGON) comporte 9 ou 14 chiffres." + +#: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." msgstr "" "Somme de contrôle non valide pour le numéro de registre du commerce national " "(REGON)." -#: contrib/localflavor/pl/forms.py:155 +#: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." msgstr "Saisissez un code postal au format XX-XXX." @@ -3033,6 +3579,16 @@ msgid "West Pomerania" msgstr "Poméranie Occidentale" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Saisissez un code postal au format XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" +"Les numéros de téléphone doivent comporter 9 chiffres, ou débuter par un + " +"ou 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Saisissez une CIF valide." @@ -3053,6 +3609,107 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Saisissez un code postal valide au format XXXXXX" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Saisissez un numéro d'organisation suédois valide." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Saisissez un numéro d'identité personnelle suédois valide." + +# The source code doesn't offer any help to explain the term +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Le nombres de co-ordination ne sont pas autorisés." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Saisissez un code postal suédois au format XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banská Bystrica" @@ -3075,23 +3732,23 @@ #: contrib/localflavor/sk/sk_districts.py:13 msgid "Bratislava I" -msgstr "Bratislava·I" +msgstr "Bratislava I" #: contrib/localflavor/sk/sk_districts.py:14 msgid "Bratislava II" -msgstr "Bratislava·II" +msgstr "Bratislava II" #: contrib/localflavor/sk/sk_districts.py:15 msgid "Bratislava III" -msgstr "Bratislava·III" +msgstr "Bratislava III" #: contrib/localflavor/sk/sk_districts.py:16 msgid "Bratislava IV" -msgstr "Bratislava·IV" +msgstr "Bratislava IV" #: contrib/localflavor/sk/sk_districts.py:17 msgid "Bratislava V" -msgstr "Bratislava·V" +msgstr "Bratislava V" #: contrib/localflavor/sk/sk_districts.py:18 msgid "Bytca" @@ -3685,20 +4342,45 @@ msgid "Wales" msgstr "Pays de Galles" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Saisissez un code postal américain au format XXXXX ou XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Les numéros de téléphone doivent être au format XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Saisissez un numéro de sécurité sociale américain au format XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Saisissez un état ou un territoire américain." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "État Américain (deux lettres majuscules)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Saisissez un numéro de CI valide au format X.XXX.XXX-X,XXXXXXX-X ou XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Saisissez un numéro CI valide." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Saisissez un numéro d'identification sud-africain valide." -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Saisissez un code postal sud-africain valide." @@ -3738,6 +4420,10 @@ msgid "Western Cape" msgstr "Cap-Occidental" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "message « lazy »" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirigé depuis" @@ -3802,61 +4488,227 @@ msgid "sites" msgstr "sites" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:700 -msgid "This value must be an integer." -msgstr "Cette valeur doit être un entier." - -#: db/models/fields/__init__.py:387 -msgid "This value must be either True or False." -msgstr "Cette valeur doit être soit vraie (True) soit fausse (False)." - -#: db/models/fields/__init__.py:420 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Saisissez une valeur valide." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Saisissez une URL valide." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Cette URL semble être cassée." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _ et " +"des traits d'union." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Saisissez une adresse IPv4 valide." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Saisissez uniquement des chiffres séparés par des virgules." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Assurez-vous que cette valeur est %(limit_value)s (actuellement %(show_value)" +"s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" +"Assurez-vous que cette valeur est inférieure ou égale à %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" +"Assurez-vous que cette valeur est supérieure ou égale à %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Assurez-vous que cette valeur comporte au moins %(limit_value)d caractères " +"(actuellement %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Assurez-vous que cette valeur comporte au maximum %(limit_value)d caractères " +"(actuellement %(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" +"%(field_name)s doit être unique pour la partie %(lookup)s de %(date_field)s." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Un(e) %(model_name)s avec ce %(field_label)s existe déjà." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "La valeur « %r » n'est pas un choix valide." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Ce champ ne peut pas être vide." -#: db/models/fields/__init__.py:436 -msgid "Enter only digits separated by commas." -msgstr "Saisissez uniquement des chiffres séparés par des virgules." - -#: db/models/fields/__init__.py:467 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Ce champ ne peut pas être vide." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Champ de type : %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Entier" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Cette valeur doit être un entier." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Cette valeur doit être soit vraie (True) soit fausse (False)." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Booléen (soit vrai ou faux)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Chaîne de caractère (jusqu'à %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Des entiers séparés par une virgule" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Date (sans l'heure)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Saisissez une date valide au format AAAA-MM-JJ." -#: db/models/fields/__init__.py:476 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Date non valide : %s" -#: db/models/fields/__init__.py:540 db/models/fields/__init__.py:558 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Saisissez une date et une heure valides au format AAAA-MM-JJ HH:MM[:ss[." "uuuuuu]]." -#: db/models/fields/__init__.py:594 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Date (avec l'heure)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Cette valeur doit être un nombre décimal." -#: db/models/fields/__init__.py:676 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Nombre décimal" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Adresse électronique" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Chemin vers le fichier" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Cette valeur doit être un nombre réel." -#: db/models/fields/__init__.py:736 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Nombre à virgule flottante" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Grand entier (8 octets)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Cette valeur doit être nulle (None), vraie (True) ou fausse (False)." -#: db/models/fields/__init__.py:834 db/models/fields/__init__.py:848 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Booléen (soit vrai, faux ou nul)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Texte" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Heure" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Saisissez une heure valide au format HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:767 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "Texte XML" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Le modèle %(model)s avec la clef primaire %(pk)r n'existe pas." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Clé étrangère (type défini par le champ lié)" + +#: db/models/fields/related.py:923 +msgid "One-to-one relationship" +msgstr "Relation un à un" + +#: db/models/fields/related.py:983 +msgid "Many-to-many relationship" +msgstr "Relation plusieurs à plusieurs" + +#: db/models/fields/related.py:1003 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Maintenez appuyé « Ctrl », ou « Commande (touche pomme) » sur un Mac, pour en " "sélectionner plusieurs." -#: db/models/fields/related.py:845 +#: db/models/fields/related.py:1064 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3866,87 +4718,67 @@ msgstr[1] "" "Saisissez des ID %(self)s valides. Les valeurs %(value)r sont non valides." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Ce champ est obligatoire." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Saisissez une valeur valide." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Assurez-vous que cette valeur fait moins de %(max)d caractères (actuellement " -"%(length)d caractères)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Assurez-vous que cette valeur fait plus de %(min)d caractères (actuellement %" -"(length)d caractères)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Saisissez un nombre entier." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Assurez-vous que cette valeur est inférieure ou égale à %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Assurez-vous que cette valeur est supérieure ou égale à %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Saisissez un nombre." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres au total." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres après la virgule." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres avant la virgule." -#: forms/fields.py:287 forms/fields.py:849 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Saisissez une date valide." -#: forms/fields.py:321 forms/fields.py:850 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Saisissez une heure valide." -#: forms/fields.py:360 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Saisissez une date et une heure valides." -#: forms/fields.py:446 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire." -#: forms/fields.py:447 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Aucun fichier n'a été soumis." -#: forms/fields.py:448 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Le fichier soumis est vide." -#: forms/fields.py:477 +#: forms/fields.py:438 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Assurez-vous que ce nom de fichier ne contient pas plus de %(max)d " +"caractères (actuellement %(length)d caractères)." + +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -3954,108 +4786,114 @@ "Téléversez une image valide. Le fichier que vous avez transféré n'est pas " "une image ou bien est corrompu." -#: forms/fields.py:538 -msgid "Enter a valid URL." -msgstr "Saisissez une URL valide." - -#: forms/fields.py:539 -msgid "This URL appears to be a broken link." -msgstr "Cette URL semble être cassée." - -#: forms/fields.py:618 forms/fields.py:696 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Sélectionnez un choix valide. %(value)s n'en fait pas partie." -#: forms/fields.py:697 forms/fields.py:758 forms/models.py:721 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:995 msgid "Enter a list of values." msgstr "Saisissez une liste de valeurs." -#: forms/fields.py:878 -msgid "Enter a valid IPv4 address." -msgstr "Saisissez une adresse IPv4 valide." - -#: forms/fields.py:888 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _ et " -"des traits d'union." - # Si « : » est requis, créer un ticket -#: forms/formsets.py:242 forms/formsets.py:244 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Ordre" -#: forms/models.py:287 forms/models.py:296 +#: forms/models.py:556 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Corrigez les données à double dans %(field)s." + +#: forms/models.py:560 #, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "Un(e) %(model_name)s avec ce %(field_label)s existe déjà." - -#: forms/models.py:594 +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" +"Corrigez les données à double dans %(field)s qui doit contenir des valeurs " +"uniques." + +#: forms/models.py:566 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"Corrigez les données à double dans %(field_name)s qui doit contenir des " +"valeurs uniques pour la partie %(lookup)s de %(date_field)s." + +#: forms/models.py:574 +msgid "Please correct the duplicate values below." +msgstr "Corrigez les valeurs à double ci-dessous." + +#: forms/models.py:848 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "La clé étrangère en ligne ne correspond pas à la clé primaire de l'instance " "parente." -#: forms/models.py:651 +#: forms/models.py:914 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" "Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux " "disponibles." -#: forms/models.py:722 +#: forms/models.py:996 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Sélectionnez un choix valide ; %s n'en fait pas partie." -#: template/defaultfilters.py:743 +#: forms/models.py:998 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "« %s » n'est pas une valeur correcte pour une clé primaire." + +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "oui, non, peut-être" -#: template/defaultfilters.py:774 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d octet" msgstr[1] "%(size)d octets" -#: template/defaultfilters.py:776 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f Ko" -#: template/defaultfilters.py:778 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f Mo" -#: template/defaultfilters.py:779 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f Go" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "après-midi" -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "matin" -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "Après-midi" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "Matin" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "minuit" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" msgstr "midi" @@ -4241,7 +5079,7 @@ msgid "Dec." msgstr "déc." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "ou" @@ -4281,47 +5119,51 @@ msgstr[0] "minute" msgstr[1] "minutes" -#: utils/timesince.py:43 +#: utils/timesince.py:45 msgid "minutes" msgstr "minutes" -#: utils/timesince.py:48 +#: utils/timesince.py:50 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" -#: utils/timesince.py:54 +#: utils/timesince.py:56 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:403 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j F Y" -#: utils/translation/trans_real.py:405 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j F Y, G:i" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "G:i:s" -#: utils/translation/trans_real.py:421 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:422 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "L'objet %(verbose_name)s a été créé avec succès." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "L'objet %(verbose_name)s a été mis à jour avec succès." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "L'objet %(verbose_name)s a été supprimé." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fr/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/fr/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fr/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/fr/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/fr/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -1,49 +1,60 @@ -# French translation for Django Javascript. -# Copyright (C) 2005 Mikaël Barbero -# This file is distributed under the same license as the Django package. +# French translation for Django Javascript. +# Copyright (C) 2005-2010 Django Software Foundation and individual contributors. +# This file is distributed under the same license as the Django package. +# +# Mikaël Barbero, 2005. +# Stéphane Raimbault , 2010. # msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-11-04 11:14+0100\n" -"PO-Revision-Date: 2009-03-01 12:43+0100\n" +"POT-Creation-Date: 2010-04-26 15:45+0200\n" +"PO-Revision-Date: 2010-04-16 23:56+0200\n" "Last-Translator: Stéphane Raimbault \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n>1\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "%s disponible(s)" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Tout choisir" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Ajouter" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Enlever" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "%s choisi(es)" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Sélectionnez un ou plusieurs choix et cliquez " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Tout enlever" +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "%(sel)s sur %(cnt)s sélectionné" +msgstr[1] "%(sel)s sur %(cnt)s sélectionnés" + #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 msgid "" @@ -57,62 +68,63 @@ msgid "S M T W T F S" msgstr "D L M M J V S" +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Afficher" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Masquer" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Afficher" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Masquer" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Maintenant" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Horloge" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Choisir une heure" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Minuit" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6:00" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Midi" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Annuler" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Aujourd'hui" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Calendrier" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Hier" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Demain" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fr/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fr/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/fr/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,36 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = 'j F Y H:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j N Y' +SHORT_DATETIME_FORMAT = 'j N Y H:i:s' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' + '%d.%m.%Y', '%d.%m.%y', # Swiss (fr_CH), '25.10.2006', '25.10.06' + '%Y-%m-%d', '%y-%m-%d', # '2006-10-25', '06-10-25' + # '%d %B %Y', '%d %b %Y', # '25 octobre 2006', '25 oct. 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d.%m.%Y %H:%M:%S', # Swiss (fr_CH), '25.10.2006 14:30:59' + '%d.%m.%Y %H:%M', # Swiss (fr_CH), '25.10.2006 14:30' + '%d.%m.%Y', # Swiss (fr_CH), '25.10.2006' + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fy_NL/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/fy_NL/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fy_NL/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/fy_NL/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,4997 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-01-27 09:58-0800\n" +"PO-Revision-Date: 2010-01-27 22:36-0700\n" +"Last-Translator: Wim Benes \n" +"Language-Team: FRISIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

              To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

              \n" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: forms/models.py:964 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "" + +#: contrib/admin/options.py:1006 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "" +msgstr[1] "" + +#: db/models/base.py:775 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: db/models/base.py:790 db/models/base.py:798 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s mei dit %(field_label)s bestiet al." + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/options.py:860 contrib/admin/options.py:1072 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "" + +#: template/defaultfilters.py:806 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:811 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: template/defaultfilters.py:808 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:810 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: contrib/admin/sites.py:447 +#, python-format +msgid "%s administration" +msgstr "" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

              By %s:

              \n" +"
                \n" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:7 +#, python-format +msgid "" +"0 of %(total_count)s %(module_name)s selected" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "" + +#: contrib/admin/helpers.py:19 +msgid "Action:" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:57 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: contrib/admin/options.py:834 +#, python-format +msgid "Add %s" +msgstr "" + +#: contrib/admin/widgets.py:238 +msgid "Add Another" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:33 +#: contrib/admin/templates/admin/edit_inline/tabular.html:78 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "" + +#: contrib/admin/options.py:561 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "All %(total_count)s %(module_name)s selected" +msgstr "" + +#: contrib/admin/templatetags/admin_list.py:240 +msgid "All dates" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: contrib/admin/actions.py:67 contrib/admin/options.py:1094 +msgid "Are you sure?" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "" + +#: utils/dates.py:19 +msgid "August" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Basque" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: conf/global_settings.py:45 +msgid "Bengali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: db/models/fields/__init__.py:892 +msgid "Big (8 byte) integer" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: db/models/fields/__init__.py:512 +msgid "Boolean (Either True or False)" +msgstr "" + +#: db/models/fields/__init__.py:923 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: conf/global_settings.py:81 +msgid "Brazilian Portuguese" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: conf/global_settings.py:46 +msgid "Bulgarian" +msgstr "" + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Catalan" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "" + +#: contrib/admin/options.py:925 +#, python-format +msgid "Change %s" +msgstr "" + +#: contrib/admin/options.py:1124 +#, python-format +msgid "Change history: %s" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "" + +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "" + +#: contrib/auth/admin.py:121 +#, python-format +msgid "Change password: %s" +msgstr "" + +#: contrib/admin/widgets.py:96 +msgid "Change:" +msgstr "" + +#: contrib/admin/options.py:565 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:556 +#, python-format +msgid "Changed %s." +msgstr "" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:16 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:14 +msgid "Click here to select all objects across all pages" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: db/models/fields/__init__.py:582 +msgid "Comma-separated integers" +msgstr "" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "" + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Croatian" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/admin/widgets.py:96 +msgid "Currently:" +msgstr "" + +#: conf/global_settings.py:48 +msgid "Czech" +msgstr "" + +#: utils/translation/trans_real.py:531 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:530 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: conf/global_settings.py:50 +msgid "Danish" +msgstr "" + +#: contrib/admin/options.py:970 +msgid "Database error" +msgstr "" + +#: db/models/fields/__init__.py:684 +msgid "Date (with time)" +msgstr "" + +#: db/models/fields/__init__.py:596 +msgid "Date (without time)" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "" + +#: contrib/admin/widgets.py:72 +msgid "Date:" +msgstr "" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "" + +#: utils/dates.py:20 +msgid "December" +msgstr "" + +#: db/models/fields/__init__.py:752 +msgid "Decimal number" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:291 +msgid "Delete" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "" + +#: contrib/admin/actions.py:85 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "" + +#: contrib/admin/options.py:570 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/auth/models.py:144 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:142 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:143 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Dutch" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "" + +#: db/models/fields/__init__.py:807 +msgid "E-mail address" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "" + +#: conf/global_settings.py:53 +msgid "English" +msgstr "" + +#: forms/fields.py:251 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Wês wis dat der net mear as %s desimale plakken binne." + +#: forms/fields.py:252 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Wês wis dat der net mear as %s sifers foar it desimale punt." + +#: forms/fields.py:250 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Wês wis dat der yn totaal net mear as %s sifers binne." + +#: forms/fields.py:424 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: core/validators.py:129 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:135 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:100 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: core/validators.py:123 forms/fields.py:197 forms/fields.py:249 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:118 forms/fields.py:196 forms/fields.py:248 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" + +#: forms/fields.py:653 forms/fields.py:715 forms/models.py:961 +msgid "Enter a list of values." +msgstr "Jou in list mei weardes." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" + +#: forms/fields.py:225 forms/fields.py:247 +msgid "Enter a number." +msgstr "Jou in nûmer." + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "" + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: core/validators.py:88 forms/fields.py:854 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Jou in falida 'slug' gearsteld mei letters, nûmers, ûnderstreekjes of " +"koppelteken." + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "" + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "" + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "" + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "" + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "" + +#: core/validators.py:91 forms/fields.py:847 +msgid "Enter a valid IPv4 address." +msgstr "Jou in falide IPv4-adres." + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: core/validators.py:69 forms/fields.py:510 +msgid "Enter a valid URL." +msgstr "Jou in falide URL." + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "" + +#: db/models/fields/__init__.py:600 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Jou in falide daum yn JJJJ-MM-DD-formaat." + +#: forms/fields.py:309 forms/fields.py:819 +msgid "Enter a valid date." +msgstr "Jou in falide datum." + +#: db/models/fields/__init__.py:682 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "Jou in falide datum/tiid yn JJJ-MM-DD OO:MM[:ss[.uuuuuu]]-formaat." + +#: forms/fields.py:363 +msgid "Enter a valid date/time." +msgstr "Jou in falide datum.tiid." + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:85 forms/fields.py:414 +msgid "Enter a valid e-mail address." +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: db/models/fields/__init__.py:1027 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Jou in falide tiid yn OO:MM[:ss[.uuuuuu]]-formaat." + +#: forms/fields.py:337 forms/fields.py:820 +msgid "Enter a valid time." +msgstr "Jou in falide tiid." + +#: core/validators.py:19 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Jou in falide wearde." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "" + +#: forms/fields.py:195 +msgid "Enter a whole number." +msgstr "Jou in folslein nûmer." + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "" + +#: core/validators.py:94 db/models/fields/__init__.py:587 +msgid "Enter only digits separated by commas." +msgstr "Jou allinnich sifers, skieden troch komma's." + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: conf/global_settings.py:55 +msgid "Estonian" +msgstr "" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "" + +#: utils/dates.py:18 +msgid "February" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: db/models/fields/__init__.py:72 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: db/models/fields/__init__.py:814 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:76 +msgid "Filter" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Finnish" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: db/models/fields/__init__.py:839 +msgid "Floating point number" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: conf/global_settings.py:60 +msgid "French" +msgstr "" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: conf/global_settings.py:62 +msgid "Galician" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Georgian" +msgstr "" + +#: conf/global_settings.py:51 +msgid "German" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: conf/global_settings.py:52 +msgid "Greek" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/auth/admin.py:29 +msgid "Groups" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Hebrew" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Hindi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: db/models/fields/related.py:959 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Hâld \"Control\", of \"Command\" op in Mac del, om mear as ien te " +"selektearjen." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:36 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Hungarian" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:905 +msgid "IP address" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Icelandic" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/auth/admin.py:28 +msgid "Important dates" +msgstr "" + +#: contrib/auth/models.py:148 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" + +#: db/models/fields/__init__.py:471 db/models/fields/__init__.py:867 +#: db/models/fields/__init__.py:963 db/models/fields/__init__.py:974 +#: db/models/fields/__init__.py:1001 +msgid "Integer" +msgstr "" + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: db/models/fields/__init__.py:601 +#, python-format +msgid "Invalid date: %s" +msgstr "Foute datum: %s" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "" + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "" + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: conf/global_settings.py:61 +msgid "Irish" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Italian" +msgstr "" + +#: contrib/admin/options.py:736 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "" + +#: utils/dates.py:18 +msgid "January" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Japanese" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Kannada" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Khmer" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Korean" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Latvian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Lithuanian" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/admin/sites.py:402 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "" + +#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "" + +#: contrib/auth/views.py:60 +msgid "Logged out" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/admin/sites.py:313 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" + +#: contrib/admin/widgets.py:126 +msgid "Lookup" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: utils/translation/trans_real.py:554 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: conf/global_settings.py:76 +msgid "Macedonian" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 +msgid "No" +msgstr "" + +#: contrib/admin/options.py:754 +msgid "No action selected." +msgstr "" + +#: contrib/admin/options.py:574 +msgid "No fields changed." +msgstr "" + +#: forms/fields.py:422 +msgid "No file was submitted." +msgstr "Der is gjin bestân yntsjinne." + +#: forms/fields.py:421 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"Der is gjin bestân yntsjinne. Kontrolearje it kodearringstype op it " +"formulier." + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "" + +#: contrib/admin/options.py:137 contrib/admin/options.py:152 +msgid "None" +msgstr "" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: conf/global_settings.py:78 +msgid "Norwegian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: utils/dates.py:19 +msgid "November" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "" + +#: utils/dates.py:19 +msgid "October" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: contrib/admin/util.py:175 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "" + +#: contrib/admin/util.py:170 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: forms/formsets.py:287 forms/formsets.py:289 +msgid "Order" +msgstr "Oarder" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "" + +#: contrib/auth/admin.py:111 +msgid "Password changed successfully." +msgstr "" + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/auth/admin.py:27 +msgid "Permissions" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Persian" +msgstr "" + +#: contrib/auth/admin.py:26 +msgid "Personal info" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "" + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "" + +#: forms/models.py:542 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:538 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: forms/models.py:548 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:556 +msgid "Please correct the duplicate values below." +msgstr "" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: db/models/fields/related.py:1020 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Jou asjobleaft falide %(self)s IDs. De wearde %(value)r is net goed." +msgstr[1] "" +"Jou asjobleaft falide %(self)s IDs. De wearden %(value)r binne net goed." + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: contrib/admin/sites.py:306 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "" + +#: conf/global_settings.py:79 +msgid "Polish" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: conf/global_settings.py:80 +msgid "Portuguese" +msgstr "" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "" + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "" + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:36 +#: contrib/admin/templates/admin/edit_inline/tabular.html:81 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +#: contrib/auth/models.py:137 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: conf/global_settings.py:82 +msgid "Romanian" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "" + +#: conf/global_settings.py:83 +msgid "Russian" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "" + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" + +#: forms/fields.py:577 forms/fields.py:652 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Selektearje in falide kar. %(value)s is net ien fan de beskikbere karren." + +#: forms/models.py:962 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Selektearje in falide kar. %s is net ien fan de beskikbere karren." + +#: forms/models.py:886 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Selektearje in falide kar. Dizze kar is net ien fan de beskikbere karren." + +#: contrib/admin/templates/admin/actions.html:14 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "" + +#: utils/dates.py:19 +msgid "September" +msgstr "" + +#: conf/global_settings.py:86 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:87 +msgid "Serbian Latin" +msgstr "" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: conf/global_settings.py:94 +msgid "Simplified Chinese" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/admin/sites.py:388 +msgid "Site administration" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: conf/global_settings.py:84 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:85 +msgid "Slovenian" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: conf/global_settings.py:54 +msgid "Spanish" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: db/models/fields/__init__.py:554 db/models/fields/__init__.py:984 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/admin/actions.py:60 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: conf/global_settings.py:88 +msgid "Swedish" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: utils/translation/trans_real.py:532 +msgid "TIME_FORMAT" +msgstr "P" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: conf/global_settings.py:89 +msgid "Tamil" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: conf/global_settings.py:90 +msgid "Telugu" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: db/models/fields/__init__.py:1007 +msgid "Text" +msgstr "" + +#: conf/global_settings.py:91 +msgid "Thai" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" + +#: contrib/admin/options.py:640 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "" + +#: contrib/admin/options.py:683 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:675 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: contrib/admin/options.py:1087 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "De %(verbose_name)s is súksesfol oanmakke." + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "De %(verbose_name)s is fuortsmiten." + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "De %(verbose_name)s is súksesfol fernijd." + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: forms/models.py:820 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: forms/fields.py:423 +msgid "The submitted file is empty." +msgstr "It yntsjinne bestân is leech." + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "" + +#: 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 "" + +#: core/validators.py:71 forms/fields.py:511 +msgid "This URL appears to be a broken link." +msgstr "Dit URL liket in ferbrutsen keppeling." + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" + +#: db/models/fields/__init__.py:67 +msgid "This field cannot be blank." +msgstr "" + +#: db/models/fields/__init__.py:66 +msgid "This field cannot be null." +msgstr "Dit fjild kin net leech wêze." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Dit fjild is fereaske." + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "" + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "" + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "" + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" + +#: db/models/fields/__init__.py:750 +msgid "This value must be a decimal number." +msgstr "Dizze wearde moat in desimaal nûmer wêze." + +#: db/models/fields/__init__.py:837 db/models/fields/__init__.py:865 +msgid "This value must be a float." +msgstr "" + +#: db/models/fields/__init__.py:475 +msgid "This value must be an integer." +msgstr "Dizze wearde moat in integer wêze." + +#: db/models/fields/__init__.py:921 +msgid "This value must be either None, True or False." +msgstr "Dizze wearde moat of Gjin, of Wier of Net wier wêze." + +#: db/models/fields/__init__.py:510 +msgid "This value must be either True or False." +msgstr "Dizze wearde moat of Wier of Net wier wêze." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: db/models/fields/__init__.py:1023 +msgid "Time" +msgstr "" + +#: contrib/admin/widgets.py:72 +msgid "Time:" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: conf/global_settings.py:95 +msgid "Traditional Chinese" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: conf/global_settings.py:92 +msgid "Turkish" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1103 +msgid "URL" +msgstr "" + +#: conf/global_settings.py:93 +msgid "Ukrainian" +msgstr "" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:435 +msgid "Unknown" +msgstr "" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "" + +#: forms/fields.py:459 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Laad in falide ôfbylding op. It bestân dy't jo opladen hawwe wie net in " +"ôfbylding of in skansearre ôfbylding." + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/auth/models.py:141 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "" + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "" + +#: contrib/admin/sites.py:329 contrib/admin/sites.py:335 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: db/models/fields/__init__.py:65 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/comments/forms.py:175 +#, 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] "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/formtools/wizard.py:132 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "" + +#: contrib/admin/templates/admin/base.html:27 +msgid "Welcome," +msgstr "" + +#: conf/global_settings.py:49 +msgid "Welsh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: db/models/fields/__init__.py:1111 +msgid "XML text" +msgstr "" + +#: utils/translation/trans_real.py:553 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 +msgid "Yes" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "" + +#: contrib/admin/options.py:654 contrib/admin/options.py:687 +#, python-format +msgid "You may add another %s below." +msgstr "" + +#: contrib/admin/options.py:644 contrib/admin/options.py:677 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/admin/sites.py:332 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "" + +#: contrib/auth/models.py:143 +msgid "active" +msgstr "" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admin/options.py:556 contrib/admin/options.py:566 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:797 +#: forms/models.py:544 +msgid "and" +msgstr "" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "" + +#: utils/dates.py:23 +msgid "apr" +msgstr "" + +#: utils/dates.py:24 +msgid "aug" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "" + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "" + +#: contrib/auth/models.py:146 +msgid "date joined" +msgstr "" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/dates.py:24 +msgid "dec" +msgstr "" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "" + +#: contrib/auth/models.py:140 +msgid "e-mail address" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "" + +#: utils/dates.py:23 +msgid "feb" +msgstr "" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "" + +#: contrib/auth/models.py:138 +msgid "first name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "" + +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "" + +#: contrib/auth/models.py:99 contrib/auth/models.py:147 +msgid "groups" +msgstr "" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "" + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "" + +#: utils/dates.py:23 +msgid "jan" +msgstr "" + +#: utils/dates.py:24 +msgid "jul" +msgstr "" + +#: utils/dates.py:23 +msgid "jun" +msgstr "" + +#: contrib/auth/models.py:145 +msgid "last login" +msgstr "" + +#: contrib/auth/models.py:139 +msgid "last name" +msgstr "" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "" + +#: utils/dates.py:23 +msgid "mar" +msgstr "" + +#: utils/dates.py:23 +msgid "may" +msgstr "" + +#: contrib/auth/models.py:347 +msgid "message" +msgstr "" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "" + +#: utils/dates.py:24 +msgid "nov" +msgstr "" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "" + +#: utils/dates.py:24 +msgid "oct" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "" + +#: utils/text.py:128 +msgid "or" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "" + +#: contrib/auth/models.py:141 +msgid "password" +msgstr "" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "" + +#: utils/dates.py:24 +msgid "sep" +msgstr "" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "" + +#: contrib/auth/models.py:142 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:144 +msgid "superuser status" +msgstr "" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "" + +#: contrib/auth/models.py:153 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "" + +#: contrib/auth/models.py:149 +msgid "user permissions" +msgstr "" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "" + +#: contrib/auth/models.py:137 +msgid "username" +msgstr "" + +#: contrib/auth/models.py:154 +msgid "users" +msgstr "" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:775 +msgid "yes,no,maybe" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#~ msgid "" +#~ "Ensure this value has at least %(min)d characters (it has %(length)d)." +#~ msgstr "" +#~ "Wês wis dat dizze wearde minstens %(min)d karakters hat (it hat %(length)" +#~ "d)." + +#~ msgid "" +#~ "Ensure this value has at most %(max)d characters (it has %(length)d)." +#~ msgstr "" +#~ "Wês wis dat dizze wearde maksimaal %(max)d karakters hat (it hat %(length)" +#~ "d)." + +#~ msgid "Ensure this value is greater than or equal to %s." +#~ msgstr "Wês wis dat dizze wearde grutter of lyk is oan %s." + +#~ msgid "Ensure this value is less than or equal to %s." +#~ msgstr "Wês wis dat dizze wearde minder of lyk is oan %s." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fy_NL/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/fy_NL/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/fy_NL/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/fy_NL/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,119 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-01-27 09:59-0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:89 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:129 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:178 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:176 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Tomorrow" +msgstr "" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ga/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/ga/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ga/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/ga/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/ga/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -1,213 +1,257 @@ -# +# This file is distributed under the same license as the Django package. +# msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-14 10:20+0100\n" -"PO-Revision-Date: 2008-08-14 14:46+0100\n" +"POT-Creation-Date: 2010-03-01 11:28+0000\n" +"PO-Revision-Date: 2010-03-01 11:30+0100\n" "Last-Translator: Michael Thornhill \n" -"Language-Team: Gaeilge \n" +"Language-Team: Irish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? 3 : 4\n" #: conf/global_settings.py:44 msgid "Arabic" msgstr "Arabach" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Bulgárach" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "Beangáilis" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Bulgárach" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "Catalóinis" +msgid "Bosnian" +msgstr "Bosnian" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Catalóinis" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "Seiceach" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "Breatnach" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "Dainmhairgis" +msgid "Welsh" +msgstr "Breatnach" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dainmhairgis" + +#: conf/global_settings.py:52 msgid "German" msgstr "Gearmánach" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Gréigis" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Béarla" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "Spáinneach" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Eastóinis" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "Spáinnis Airgintín" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Eastóinis" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "Bascais" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "Peirsis" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "Fionlainnis" -#: conf/global_settings.py:60 -msgid "French" -msgstr "Francach" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "Gaeilge" +msgid "French" +msgstr "Francach" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "Gailísis" +msgid "Frisian" +msgstr "Frisian" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Ungáiris" +msgid "Irish" +msgstr "Gaeilge" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "Gailísis" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "Eabhrach" -#: conf/global_settings.py:65 +#: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hiondúis" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "Cróitis" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 +msgid "Hungarian" +msgstr "Ungáiris" + +#: conf/global_settings.py:69 msgid "Icelandic" msgstr "Mórlainnis" -#: conf/global_settings.py:67 -msgid "Italian" -msgstr "Iodáilis" - -#: conf/global_settings.py:68 -msgid "Japanese" -msgstr "Seapáinis" - -#: conf/global_settings.py:69 -msgid "Georgian" -msgstr "Seoirseach" - #: conf/global_settings.py:70 -msgid "Korean" -msgstr "Cóiréis" +msgid "Italian" +msgstr "Iodáilis" #: conf/global_settings.py:71 -msgid "Khmer" -msgstr "Ciméiris" +msgid "Japanese" +msgstr "Seapáinis" #: conf/global_settings.py:72 -msgid "Kannada" -msgstr "Cannadais" +msgid "Georgian" +msgstr "Seoirseach" #: conf/global_settings.py:73 -msgid "Latvian" -msgstr "Laitvis" +msgid "Khmer" +msgstr "Ciméiris" #: conf/global_settings.py:74 +msgid "Kannada" +msgstr "Cannadais" + +#: conf/global_settings.py:75 +msgid "Korean" +msgstr "Cóiréis" + +#: conf/global_settings.py:76 msgid "Lithuanian" msgstr "Liotuáinis" -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 +msgid "Latvian" +msgstr "Laitvis" + +#: conf/global_settings.py:78 msgid "Macedonian" msgstr "Macadóinis" -#: conf/global_settings.py:76 -msgid "Dutch" -msgstr "Ollannach" - -#: conf/global_settings.py:77 -msgid "Norwegian" -msgstr "Ioruais" - -#: conf/global_settings.py:78 -msgid "Polish" -msgstr "snas" - #: conf/global_settings.py:79 -msgid "Portugese" -msgstr "Portaingéileach" +msgid "Dutch" +msgstr "Ollannach" #: conf/global_settings.py:80 -msgid "Brazilian Portuguese" -msgstr "Brasaíleach" +msgid "Norwegian" +msgstr "Ioruais" #: conf/global_settings.py:81 -msgid "Romanian" -msgstr "Rómáinis" +msgid "Polish" +msgstr "Polainnis" #: conf/global_settings.py:82 +msgid "Portuguese" +msgstr "Portaingéilis" + +#: conf/global_settings.py:83 +msgid "Brazilian Portuguese" +msgstr "Portaingéilis Bhrasaíleach" + +#: conf/global_settings.py:84 +msgid "Romanian" +msgstr "Rómáinis" + +#: conf/global_settings.py:85 msgid "Russian" msgstr "Rúiseach" -#: conf/global_settings.py:83 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "Slóvaicis" -#: conf/global_settings.py:84 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "Slóivéinis" -#: conf/global_settings.py:85 -msgid "Serbian" -msgstr "Seirbiach" - -#: conf/global_settings.py:86 -msgid "Swedish" -msgstr "Sualainnis" - -#: conf/global_settings.py:87 -msgid "Tamil" -msgstr "Tamailis" - #: conf/global_settings.py:88 -msgid "Telugu" -msgstr "Teileagúis" +msgid "Albanian" +msgstr "Albanian" #: conf/global_settings.py:89 -msgid "Turkish" -msgstr "Tuircis" +msgid "Serbian" +msgstr "Seirbiach" #: conf/global_settings.py:90 -msgid "Ukrainian" -msgstr "Úcráinis" +msgid "Serbian Latin" +msgstr "Laidin Seirbiach" #: conf/global_settings.py:91 +msgid "Swedish" +msgstr "Sualainnis" + +#: conf/global_settings.py:92 +msgid "Tamil" +msgstr "Tamailis" + +#: conf/global_settings.py:93 +msgid "Telugu" +msgstr "Teileagúis" + +#: conf/global_settings.py:94 +msgid "Thai" +msgstr "Tamailis" + +#: conf/global_settings.py:95 +msgid "Turkish" +msgstr "Tuircis" + +#: conf/global_settings.py:96 +msgid "Ukrainian" +msgstr "Úcráinis" + +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "Vitneaimis" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "Sínis" -#: conf/global_settings.py:92 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "Sínis Tradisúinta" +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "D'éirigh le scriosadh %(count)d %(items)s." + +#: contrib/admin/actions.py:59 +#: contrib/admin/options.py:1099 +msgid "Are you sure?" +msgstr "An bhfuil tú cinnte?" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Scrios %(verbose_name_plural) roghnaithe" + #: contrib/admin/filterspecs.py:44 #, python-format msgid "" @@ -217,8 +261,10 @@ "

                Trí %s:

                \n" "
                  \n" -#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 -#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +#: contrib/admin/filterspecs.py:75 +#: contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 +#: contrib/admin/filterspecs.py:173 msgid "All" msgstr "Gach" @@ -242,21 +288,25 @@ msgid "This year" msgstr "An blian seo" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:379 -#: oldforms/__init__.py:588 +#: contrib/admin/filterspecs.py:147 +#: forms/widgets.py:440 msgid "Yes" msgstr "Tá" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:379 -#: oldforms/__init__.py:588 +#: contrib/admin/filterspecs.py:147 +#: forms/widgets.py:440 msgid "No" msgstr "Níl" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:379 -#: oldforms/__init__.py:588 +#: contrib/admin/filterspecs.py:154 +#: forms/widgets.py:440 msgid "Unknown" msgstr "Gan aithne" +#: contrib/admin/helpers.py:19 +msgid "Action:" +msgstr "Aicsean:" + #: contrib/admin/models.py:19 msgid "action time" msgstr "am aicsean" @@ -285,166 +335,185 @@ msgid "log entries" msgstr "loga iontrálacha" -#: contrib/admin/options.py:143 contrib/admin/options.py:202 +#: contrib/admin/options.py:139 +#: contrib/admin/options.py:154 msgid "None" msgstr "Dada" -#: contrib/admin/options.py:407 +#: contrib/admin/options.py:558 #, python-format msgid "Changed %s." msgstr "Athraithe %s" -#: contrib/admin/options.py:407 contrib/admin/options.py:417 -#: core/validators.py:279 db/models/manipulators.py:305 +#: contrib/admin/options.py:558 +#: contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 +#: db/models/base.py:802 +#: forms/models.py:552 msgid "and" msgstr "agus" -#: contrib/admin/options.py:412 +#: contrib/admin/options.py:563 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Suimithe %(name)s \"%(object)s\"." -#: contrib/admin/options.py:416 +#: contrib/admin/options.py:567 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Athraithe %(list)s le %(name)s \"%(object)s\"." -#: contrib/admin/options.py:421 +#: contrib/admin/options.py:572 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Scriosaithe %(name)s \"%(object)s\"." -#: contrib/admin/options.py:425 +#: contrib/admin/options.py:576 msgid "No fields changed." msgstr "Dada réimse aithraithe" -#: contrib/admin/options.py:486 contrib/auth/admin.py:50 +#: contrib/admin/options.py:642 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Bhí %(name)s \"%(obj)s\" breisithe go rathúil" -#: contrib/admin/options.py:490 contrib/admin/options.py:523 -#: contrib/auth/admin.py:55 +#: contrib/admin/options.py:646 +#: contrib/admin/options.py:679 msgid "You may edit it again below." msgstr "Is féidir leat é a cuir in eagar thíos." -#: contrib/admin/options.py:500 contrib/admin/options.py:533 +#: contrib/admin/options.py:656 +#: contrib/admin/options.py:689 #, python-format msgid "You may add another %s below." msgstr "Is féidir le ceann eile %s a cuir le thíos." -#: contrib/admin/options.py:521 +#: contrib/admin/options.py:677 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Bhí an %(name)s \"%(obj)s\" aithraithe to rathúil" -#: contrib/admin/options.py:529 +#: contrib/admin/options.py:685 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"Chuir an %(name)s·\"%(obj)s\"·go rathúil.·Is féidir leat é a cuir in eagar " -"thíos." - -#: contrib/admin/options.py:596 +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "Chuir an %(name)s·\"%(obj)s\"·go rathúil.·Is féidir leat é a cuir in eagar thíos." + +#: contrib/admin/options.py:743 +msgid "Items must be selected in order to perform actions on them. No items have been changed." +msgstr "Ní mór Míreanna a roghnú chun caingne a dhéanamh orthu. Níl aon mhíreanna a athrú." + +#: contrib/admin/options.py:761 +msgid "No action selected." +msgstr "Uimh gníomh roghnaithe." + +#: contrib/admin/options.py:841 #, python-format msgid "Add %s" msgstr "Cuir %s le" -#: contrib/admin/options.py:673 +#: contrib/admin/options.py:867 +#: contrib/admin/options.py:1079 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Níl réad le hainm %(name)s agus eochair %(key)r ann." + +#: contrib/admin/options.py:932 #, python-format msgid "Change %s" msgstr "Aithrigh %s" -#: contrib/admin/options.py:704 +#: contrib/admin/options.py:977 msgid "Database error" msgstr "Botún bunachar sonraí" -#: contrib/admin/options.py:753 +#: contrib/admin/options.py:1013 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "Bhí %(count)s %(name)s aithraithe go rathúil" +msgstr[1] "Bhí %(count)s %(name)s aithraithe to rathúil" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" + +#: contrib/admin/options.py:1092 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Bhí %(name)s \"%(obj)s\" scrioste go rathúil." -#: contrib/admin/options.py:760 -msgid "Are you sure?" -msgstr "An bhfuil tú cinnte?" - -#: contrib/admin/options.py:787 +#: contrib/admin/options.py:1129 #, python-format msgid "Change history: %s" msgstr "Athraigh stáir %s" -#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16 -#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Le do thoil, iontráil aihm úsaideora agus focal faire ceart. Bí cúramach go " -"bhfuil an beirt acu cásíogair." - -#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Le do thoil, logáil isteach arís cé go bhfuil to seisúin críochnaithe. Ná " -"bí imní ort, tá do iarratas sabháilte." - -#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Le do thoil, " -"cumasaigh cuaiche, athlódáil an leathanach seo, agus déan iarracht arís." - -#: contrib/admin/sites.py:259 contrib/admin/sites.py:265 -#: contrib/admin/views/decorators.py:92 +#: contrib/admin/sites.py:22 +#: contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "Le do thoil, iontráil aihm úsaideora agus focal faire ceart. Bí cúramach go bhfuil an beirt acu cásíogair." + +#: contrib/admin/sites.py:311 +#: contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "Le do thoil, logáil isteach arís cé go bhfuil to seisúin críochnaithe." + +#: contrib/admin/sites.py:318 +#: contrib/admin/views/decorators.py:47 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Le do thoil, cumasaigh cuaiche, athlódáil an leathanach seo, agus déan iarracht arís." + +#: contrib/admin/sites.py:334 +#: contrib/admin/sites.py:340 +#: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Níl an carachtar '@' ceadaithe in ainmeacha úsaideora." -#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88 +#: contrib/admin/sites.py:337 +#: contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Níl do ríomhseoladh do ainm úsaideora. Bain trial as '%s'." -#: contrib/admin/sites.py:330 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Riaracháin an suíomh" -#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27 +#: contrib/admin/sites.py:407 +#: contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 -#: contrib/admin/views/decorators.py:30 +#: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Logáil isteach" -#: contrib/admin/util.py:126 +#: contrib/admin/sites.py:452 #, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Ceann amhain nó níos mó %(fieldname)s in %(name)s: %(obj)s" - -#: contrib/admin/util.py:131 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Ceann amhain nó níos mó %(fieldname)s in %(name)s:" - -#: contrib/admin/widgets.py:65 +msgid "%s administration" +msgstr "%s riaracháin" + +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Dáta:" -#: contrib/admin/widgets.py:65 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Am:" -#: contrib/admin/widgets.py:89 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Ag an am seo." -#: contrib/admin/widgets.py:89 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Athraigh:" +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "Cuardach" + +#: contrib/admin/widgets.py:241 +msgid "Add Another" +msgstr "Cuir le" + #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 msgid "Page not found" @@ -455,16 +524,18 @@ msgstr "Tá brón orainn, ach ní bhfuarthas an leathanach iarraite." #: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:8 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 #: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -486,36 +557,68 @@ msgstr "Botún Freastalaí (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 "" -"Bhí botún. Seolah é go dtí riarthóirí an suíomh agus beidh sé ceartaithe i " -"gceann tamallín. Go raibh maith agat le hadhaigh do foighne." - -#: contrib/admin/templates/admin/base.html:25 +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 "Bhí botún. Seolah é go dtí riarthóirí an suíomh agus beidh sé ceartaithe i gceann tamallín. Go raibh maith agat le hadhaigh do foighne." + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "Rith an gníomh roghnaithe" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Té" + +#: contrib/admin/templates/admin/actions.html:7 +#, python-format +msgid "0 of %(total_count)s %(module_name)s selected" +msgstr "0 de%(total_count)s %(module_name)s roghnaithe" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "All %(total_count)s %(module_name)s selected" +msgstr "Gach %(total_count)s %(module_name)s roghnaithe" + +#: contrib/admin/templates/admin/actions.html:14 +msgid "Click here to select all objects across all pages" +msgstr "Cliceáil anseo chun an roghnú ábhair go léir ar fud gach leathanach" + +#: contrib/admin/templates/admin/actions.html:14 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Roghnaigh gach %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:16 +msgid "Clear selection" +msgstr "Scroiseadh modhnóir" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Fáilte" -#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Doiciméadúchán" -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:13 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Athraigh focal faire" -#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Logáil amach" @@ -527,65 +630,75 @@ msgid "Django administration" msgstr "Riarachán Django" -#: contrib/admin/templates/admin/change_form.html:19 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Cuir le" -#: contrib/admin/templates/admin/change_form.html:26 -#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Stair" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Breath ar suíomh" -#: contrib/admin/templates/admin/change_form.html:37 -#: contrib/admin/templates/admin/auth/user/change_password.html:22 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Le do thoil ceartaigh an botún thíos." msgstr[1] "Le do thoil ceartaigh na botúin thíos." -#: contrib/admin/templates/admin/change_list.html:16 +#: contrib/admin/templates/admin/change_list.html:60 #, python-format msgid "Add %(name)s" msgstr "Cuir %(name)s le" -#: contrib/admin/templates/admin/change_list.html:26 +#: contrib/admin/templates/admin/change_list.html:79 msgid "Filter" msgstr "Scagaire" -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 +#: forms/formsets.py:294 msgid "Delete" msgstr "Cealaigh" -#: contrib/admin/templates/admin/delete_confirmation.html:15 +#: contrib/admin/templates/admin/delete_confirmation.html:16 #, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Má scriossan tú %(object_name)s '%(escaped_object)s' scriosfaidh oibiachtí " -"gaolta. Ach níl cead ag do cuntas na oibiacht a leanúint a scriosadh:" - -#: contrib/admin/templates/admin/delete_confirmation.html:22 +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Má scriossan tú %(object_name)s '%(escaped_object)s' scriosfaidh oibiachtí gaolta. Ach níl cead ag do cuntas na oibiacht a leanúint a scriosadh:" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 #, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"An bhfuil tú cinnte na %(object_name)s \"%(escaped_object)s\" a scroiseadh?" -"Beidh gach oibiacht a leanúint scroiste freisin:" - -#: contrib/admin/templates/admin/delete_confirmation.html:27 +msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:" +msgstr "An bhfuil tú cinnte na %(object_name)s \"%(escaped_object)s\" a scroiseadh?Beidh gach oibiacht a leanúint scroiste freisin:" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 msgid "Yes, I'm sure" msgstr "Táim cinnte" +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "Scrios na réadanna" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "Deleting the %(object_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Má scriossan tú %(object_name)s scriosfaidh oibiachtí gaolta. Ach níl cead ag do cuntas na oibiacht a leanúint a scriosadh:" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "Are you sure you want to delete the selected %(object_name)s objects? All of the following objects and their related items will be deleted:" +msgstr "An bhfuil tú cinnte na %(object_name)s a scroiseadh? Beidh gach oibiacht a leanúint agus na oibiachta gaolta scroiste freisin:" + #: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(filter_title)s " @@ -596,11 +709,6 @@ msgid "Models available in the %(name)s application." msgstr "Samhla ar fáil ins an feidhmchlár %(name)s." -#: contrib/admin/templates/admin/index.html:19 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - #: contrib/admin/templates/admin/index.html:35 msgid "Change" msgstr "Athraigh" @@ -621,123 +729,117 @@ msgid "None available" msgstr "Dada ar fáil" +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "Inneachair anaithnid" + #: contrib/admin/templates/admin/invalid_setup.html:7 -msgid "" -"Something's wrong with your database installation. Make sure the appropriate " -"database tables have been created, and make sure the database is readable by " -"the appropriate user." -msgstr "" -"Tá rud éigin mícheart le suitéail do bunachar sonraí. Déan cinnte go bhfuil " -"boird an bunachar sonraI cruthaithe cheana, agus déan cinnte go bhfuil do " -"úsaideoir in ann an bunacchar sonraí a léamh." +msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." +msgstr "Tá rud éigin mícheart le suitéail do bunachar sonraí. Déan cinnte go bhfuil boird an bunachar sonraI cruthaithe cheana, agus déan cinnte go bhfuil do úsaideoir in ann an bunacchar sonraí a léamh." #: contrib/admin/templates/admin/login.html:19 -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 msgid "Username:" msgstr "Ainm úsaideor:" #: contrib/admin/templates/admin/login.html:22 -#: contrib/comments/templates/comments/form.html:8 msgid "Password:" msgstr "Focal faire:" -#: contrib/admin/templates/admin/object_history.html:16 +#: contrib/admin/templates/admin/object_history.html:22 msgid "Date/time" msgstr "Dáta/am" -#: contrib/admin/templates/admin/object_history.html:17 +#: contrib/admin/templates/admin/object_history.html:23 msgid "User" msgstr "Úsaideoir" -#: contrib/admin/templates/admin/object_history.html:18 +#: contrib/admin/templates/admin/object_history.html:24 msgid "Action" msgstr "Aicsean" -#: contrib/admin/templates/admin/object_history.html:24 -msgid "DATE_WITH_TIME_FULL" -msgstr "DATE_WITH_TIME_FULL" - -#: contrib/admin/templates/admin/object_history.html:32 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Níl stáir aitraithe ag an oibiacht seo agús is dócha ná cuir le tríd an an " -"suíomh riarachán." +#: contrib/admin/templates/admin/object_history.html:38 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Níl stáir aitraithe ag an oibiacht seo agús is dócha ná cuir le tríd an an suíomh riarachán." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "Taispéan gach rud" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Sábháil" + #: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Té" +msgid "Search" +msgstr "Cuardach" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "1 result" msgid_plural "%(counter)s results" msgstr[0] "toradh 1" -msgstr[1] "1 toradh" +msgstr[1] "%(counter)s torthaí" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "%(full_result_count)s total" msgstr "%(full_result_count)s iomlán" -#: contrib/admin/templates/admin/submit_line.html:4 +#: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Sabháil mar nua" -#: contrib/admin/templates/admin/submit_line.html:5 +#: contrib/admin/templates/admin/submit_line.html:6 msgid "Save and add another" msgstr "Sabháil agus cuir le ceann eile" -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Sábhail agus lean ag cuir in eagar" - #: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Sábháil" - -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "" -"Ar dtús, iontráil ainm úsaideoir agus focal faire. Ansin, beidh tú in ann " -"cuir in eagar níos mó roghaí úsaideoira." - -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:51 -msgid "Username" -msgstr "Ainm úsaideoir" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:33 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176 +msgid "Save and continue editing" +msgstr "Sábhail agus lean ag cuir in eagar" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "Ar dtús, iontráil ainm úsaideoir agus focal faire. Ansin, beidh tú in ann cuir in eagar níos mó roghaí úsaideoira." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Iontráil focal faire nua le hadhaigh an úsaideor %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:61 +#: contrib/auth/forms.py:186 msgid "Password" msgstr "Focal faire" -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -#: contrib/auth/forms.py:177 +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 msgid "Password (again)" msgstr "Focal faire (arís)" -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 msgid "Enter the same password as above, for verification." msgstr "Iontráíl an focal faire céanna mar thuas, le fíorúchán." -#: contrib/admin/templates/admin/auth/user/change_password.html:26 +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 #, python-format -msgid "Enter a new password for the user %(username)s." -msgstr "" -"Iontráil focal faire nua le hadhaigh an úsaideor %(username)s." +msgid "Add another %(verbose_name)s" +msgstr "Cuir eile %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Tóg amach" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "Cealaigh?" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." @@ -748,9 +850,9 @@ msgstr "Logáil isteacj arís" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Athrú focal faire" @@ -763,30 +865,21 @@ msgid "Your password was changed." msgstr "Bhí do focal faire aithraithe." -#: 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 "" -"Le do thoil, iontráil do sean-focal faire, ar son slándáil, agus ansin " -"iontráil do focal faire dhá uaire cé go mbeimid in ann a seiceal go bhfuil " -"sé scríobhte isteach i gceart." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Sean-focal faire" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Focal faire nua:" - #: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Deimhnigh focal faire:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +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 "Le do thoil, iontráil do sean-focal faire, ar son slándáil, agus ansin iontráil do focal faire dhá uaire cé go mbeimid in ann a seiceal go bhfuil sé scríobhte isteach i gceart." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Sean-focal faire " + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Focal faire nua" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Athraigh mo focal faire" @@ -818,24 +911,24 @@ msgstr "Cuir isteach focal faire nua" #: contrib/admin/templates/registration/password_reset_confirm.html:14 -msgid "" -"Please enter your new password twice so we can verify you typed it in " -"correctly." -msgstr "" -"Le do thoil, iontráil do focal faire dhá uaire cé go mbeimid in ann a " -"seiceal go bhfuil sé scríobhte isteach i gceart." +msgid "Please enter your new password twice so we can verify you typed it in correctly." +msgstr "Le do thoil, iontráil do focal faire dhá uaire cé go mbeimid in ann a seiceal go bhfuil sé scríobhte isteach i gceart." + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Focal faire nua:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Deimhnigh focal faire:" #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Athshocraigh focal faire mí-rathúil" #: contrib/admin/templates/registration/password_reset_confirm.html:28 -msgid "" -"The password reset link was invalid, possibly because it has already been " -"used. Please request a new password reset." -msgstr "" -"Bhí nasc athshocraigh an focal faire mícheart, b'fheidir mar go raibh sé " -"úsaidte cheana. Le do thoil, iarr ar athsocraigh focal faire nua." +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "Bhí nasc athshocraigh an focal faire mícheart, b'fheidir mar go raibh sé úsaidte cheana. Le do thoil, iarr ar athsocraigh focal faire nua." #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 @@ -843,17 +936,12 @@ msgstr "Athshocraigh focal faire mí-rathúil" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed you instructions for setting your password to the e-mail " -"address you submitted. You should be receiving it shortly." -msgstr "" -"Seolamar teagasca chugat le hadhaigh do r-phost a úsaid mar to focal faire. " -"Gheobaidh tú an r-phost i gceann tamallín." +msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Seolamar teagasca chugat le hadhaigh do r-phost a úsaid mar to focal faire. Gheobaidh tú an r-phost i gceann tamallín." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" -"Tá tú ag fáil an r-phost seo mar iarr tú ar athshocraigh an focal faire." +msgstr "Tá tú ag fáil an r-phost seo mar iarr tú ar athshocraigh an focal faire." #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -862,9 +950,7 @@ #: contrib/admin/templates/registration/password_reset_email.html:5 msgid "Please go to the following page and choose a new password:" -msgstr "" -"Le do thoil té go dtí an leathanach a leanúint agus roghmaigh focal faire " -"nua:" +msgstr "Le do thoil té go dtí an leathanach a leanúint agus roghmaigh focal faire nua:" #: contrib/admin/templates/registration/password_reset_email.html:9 msgid "Your username, in case you've forgotten:" @@ -880,12 +966,8 @@ msgstr "Foireann an %(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 e-mail " -"instructions for setting a new one." -msgstr "" -"Dearmad déanta ar do focal faire? Iontráil do r-phost thíos agus seolfaimid " -"teagasca chun ceann nua a fháil." +msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." +msgstr "Dearmad déanta ar do focal faire? Iontráil do r-phost thíos agus seolfaimid teagasca chun ceann nua a fháil." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -895,165 +977,95 @@ msgid "Reset my password" msgstr "Athsocraigh mo focal faire" -#: contrib/admin/templatetags/admin_list.py:257 +#: contrib/admin/templatetags/admin_list.py:240 msgid "All dates" msgstr "Gach dáta" -#: contrib/admin/views/main.py:65 +#: contrib/admin/views/main.py:70 #, python-format msgid "Select %s" msgstr "Roghnaigh %s" -#: contrib/admin/views/main.py:65 +#: contrib/admin/views/main.py:70 #, python-format msgid "Select %s to change" msgstr "Roghnaigh %s a athrú" -#: contrib/admin/views/template.py:36 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 +#: contrib/sites/models.py:38 msgid "site" msgstr "suíomh" -#: contrib/admin/views/template.py:38 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "teimpléad" -#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55 -#: contrib/admindocs/views.py:57 +#: contrib/admindocs/views.py:61 +#: contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "clib:" -#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89 -#: contrib/admindocs/views.py:91 +#: contrib/admindocs/views.py:94 +#: contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "scag:" -#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155 -#: contrib/admindocs/views.py:157 +#: contrib/admindocs/views.py:158 +#: contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "radharc:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Ní bhfuarthas feidhmchlár %r " -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Ní bhfuarthas samhail %(model_name)r i bhfeidhmclár %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "An oibiacht gaolmhara `%(app_label)s.%(data_type)s`" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 +#: contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 +#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 +#: contrib/admindocs/views.py:266 msgid "model:" msgstr "samhail:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 +#: contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "Oibiachtí gaolmhara `%(app_label)s.%(object_name)s`" -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "gach %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 +#: contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "líon %s" -#: contrib/admindocs/views.py:253 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Réimse ar oibiachtí %s" -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328 -#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336 -#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339 -msgid "Integer" -msgstr "Slánuimhir" - -#: contrib/admindocs/views.py:318 -msgid "Boolean (Either True or False)" -msgstr "Boole" - -#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Teaghrán (suas go %(max_length)s)" - -#: contrib/admindocs/views.py:320 -msgid "Comma-separated integers" -msgstr "Slánuimhireacha camóg-scartha" - -#: contrib/admindocs/views.py:321 -msgid "Date (without time)" -msgstr "Dáta (gan am)" - -#: contrib/admindocs/views.py:322 -msgid "Date (with time)" -msgstr "Dáta (le am)" - -#: contrib/admindocs/views.py:323 -msgid "Decimal number" -msgstr "Uimhir deachúlach" - -#: contrib/admindocs/views.py:324 -msgid "E-mail address" -msgstr "R-phost" - -#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:329 -msgid "File path" -msgstr "Conair comhaid" - -#: contrib/admindocs/views.py:327 -msgid "Floating point number" -msgstr "Snámhphointe" - -#: contrib/admindocs/views.py:331 contrib/comments/models.py:89 -msgid "IP address" -msgstr "Seol IP" - -#: contrib/admindocs/views.py:333 -msgid "Boolean (Either True, False or None)" -msgstr "Boole (Fíor, Bréagach nó Dada)" - -#: contrib/admindocs/views.py:334 -msgid "Relation to parent model" -msgstr "Cine do samhail máthair" - -#: contrib/admindocs/views.py:335 -msgid "Phone number" -msgstr "Uimhir telefón" - -#: contrib/admindocs/views.py:340 -msgid "Text" -msgstr "téacs" - -#: contrib/admindocs/views.py:341 -msgid "Time" -msgstr "am" - -#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8 -#: contrib/flatpages/models.py:8 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:343 -msgid "U.S. state (two uppercase letters)" -msgstr "U.S. stát (dhá litreacha móra)" - -#: contrib/admindocs/views.py:344 -msgid "XML text" -msgstr "Téacs XML" - -#: contrib/admindocs/views.py:370 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "Feiceann sé nach bhfuil %s oibiacht urlpattern" @@ -1077,32 +1089,26 @@ "your computer is \"internal\").

                  \n" msgstr "" "\n" -"

                  Chun leabharmarcín a suitéal, Tarraing an nasc go dtí do barra uirlisí leabhairmairc\n, nó deaschliceáil and nasc agus cuir leis do leabharmairc. Anois is féidir\n" -"leat an leabharmarcín a roghnaigh ón aon leathanach ar an suíomh. Bí cúramach go dteastaíonn cuid de na leabharmarcín go bhfuil tú ag féachaint ar an suíomh ó ríomhaire inmheánach\n(leabhar le do riarthóir córais muna bhfuil tú cinnte).

                  \n" +"

                  Chun leabharmarcín a suitéal, Tarraing an nasc go dtí do barra uirlisí leabhairmairc\n" +", nó deaschliceáil and nasc agus cuir leis do leabharmairc. Anois is féidir\n" +"leat an leabharmarcín a roghnaigh ón aon leathanach ar an suíomh. Bí cúramach go dteastaíonn cuid de na leabharmarcín go bhfuil tú ag féachaint ar an suíomh ó ríomhaire inmheánach\n" +"(leabhar le do riarthóir córais muna bhfuil tú cinnte).

                  \n" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 msgid "Documentation for this page" msgstr "Doiciméadúchán le hadhaigh an leathanach seo" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" -"Tógann se tusa ón aon leathanach go dtí an doiciméadúchán le hadhaigh an " -"radharc a rinne an leathanach." +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "Tógann se tusa ón aon leathanach go dtí an doiciméadúchán le hadhaigh an radharc a rinne an leathanach." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 msgid "Show object ID" msgstr "Taispéain oibiacht ID" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Taispéain an content-type agus ID uathúil le leathanaigh le hadhaigh " -"oibiacht amháin." +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Taispéain an content-type agus ID uathúil le leathanaigh le hadhaigh oibiacht amháin." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" @@ -1110,9 +1116,7 @@ #: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Léimeann go dtí an leathanach riaracháin le leathainaigh le hadhaigh " -"oibiacht amháin." +msgstr "Léimeann go dtí an leathanach riaracháin le leathainaigh le hadhaigh oibiacht amháin." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 msgid "Edit this object (new window)" @@ -1122,42 +1126,45 @@ msgid "As above, but opens the admin page in a new window." msgstr "Mar thuas, ach osclaíonn sé an leathanach riarachán if fuinneog nua" -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Eolas pearsantach" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Ceada" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Dáta tábhactach" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grúpa" -#: contrib/auth/admin.py:60 -msgid "Add user" -msgstr "Cuir úsaideoir le" - -#: contrib/auth/admin.py:85 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Focal faire aithraithe rathúil" -#: contrib/auth/admin.py:91 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Athraigh focal faire: %s" -#: contrib/auth/forms.py:15 contrib/auth/models.py:137 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 +#: contrib/auth/forms.py:48 +#: contrib/auth/forms.py:60 +msgid "Username" +msgstr "Ainm úsaideoir" + +#: contrib/auth/forms.py:15 +#: contrib/auth/forms.py:49 +#: contrib/auth/models.py:180 +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." msgstr "Riachtanach. 30 carachtair nó níos lú. Alfa-uimhriúil amhain (litreacha, digite agus fostríce)." -#: contrib/auth/forms.py:16 core/validators.py:72 +#: contrib/auth/forms.py:16 +#: contrib/auth/forms.py:50 msgid "This value must contain only letters, numbers and underscores." msgstr "Cathaigh litreacha, digite agus fostríce amhain le hadhaigh an méid seo." @@ -1165,249 +1172,307 @@ msgid "Password confirmation" msgstr "Focal faire deimhniú" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "In ann do úsáideoir leis an ainm úsáideora." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:146 -#: contrib/auth/forms.py:188 +#: contrib/auth/forms.py:37 +#: contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Níl an dá focla faire comhoiriúnigh" -#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Tá an cuntas seo neamhghníomhach." -#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"" -"Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Tá cuaiche ag teastail le logáil isteach." - -#: contrib/auth/forms.py:92 +#: contrib/auth/forms.py:88 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Tá cuaiche ag teastail le logáil isteach." + +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "R-phost" -#: contrib/auth/forms.py:101 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" -"Níl cuntas in éineacht leis an r-phost sin. An bhfuil tú cinnte go bhfuil tú cláraithe?" - -#: contrib/auth/forms.py:126 +#: contrib/auth/forms.py:110 +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "Níl cuntas in éineacht leis an r-phost sin. An bhfuil tú cinnte go bhfuil tú cláraithe?" + +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Athsocraigh focal faire ar %s" -#: contrib/auth/forms.py:134 -msgid "New password" -msgstr "Focal faire nua" - -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Deimnhiú focal faire nua" -#: contrib/auth/forms.py:160 -msgid "Old password" -msgstr "Sean-focal faire " - -#: contrib/auth/forms.py:168 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Cuireadh do sean-focal faire isteach go mícheart. Iontráil isteach é arís." -#: contrib/auth/models.py:73 contrib/auth/models.py:96 +#: contrib/auth/models.py:66 +#: contrib/auth/models.py:94 msgid "name" msgstr "ainm" -#: contrib/auth/models.py:75 +#: contrib/auth/models.py:68 msgid "codename" msgstr "Ainm cód" -#: contrib/auth/models.py:78 +#: contrib/auth/models.py:72 msgid "permission" msgstr "cead" -#: contrib/auth/models.py:79 contrib/auth/models.py:97 +#: contrib/auth/models.py:73 +#: contrib/auth/models.py:95 msgid "permissions" msgstr "ceada" -#: contrib/auth/models.py:100 +#: contrib/auth/models.py:98 msgid "group" msgstr "grúpa" -#: contrib/auth/models.py:101 contrib/auth/models.py:147 +#: contrib/auth/models.py:99 +#: contrib/auth/models.py:190 msgid "groups" msgstr "grúpa" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:180 msgid "username" msgstr "Ainm úsáideoir" -#: contrib/auth/models.py:138 +#: contrib/auth/models.py:181 msgid "first name" msgstr "ainm baiste" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:182 msgid "last name" msgstr "sloinne" -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:183 msgid "e-mail address" msgstr "seoladh r-phost" -#: contrib/auth/models.py:141 +#: contrib/auth/models.py:184 msgid "password" msgstr "focal faire" -#: contrib/auth/models.py:141 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "" -"Úsáid '[algo]$[salt]$[hexdigest]' nó athraigh focal faire foirm." - -#: contrib/auth/models.py:142 +#: contrib/auth/models.py:184 +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "Úsáid '[algo]$[salt]$[hexdigest]' nó athraigh focal faire foirm." + +#: contrib/auth/models.py:185 msgid "staff status" msgstr "stádas foirne" -#: contrib/auth/models.py:142 +#: contrib/auth/models.py:185 msgid "Designates whether the user can log into this admin site." msgstr "Sainigh an bhfuil cead ag an úsáideoir logáil isteach go dtí an suíomh riaracháin seo." -#: contrib/auth/models.py:143 +#: contrib/auth/models.py:186 msgid "active" msgstr "gníomhach" -#: contrib/auth/models.py:143 -msgid "" -"Designates whether this user should be treated as active. Unselect this " -"instead of deleting accounts." +#: contrib/auth/models.py:186 +msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." msgstr "Sainíonn an bhfuil an úsáideoir gníomhach. Míroghnaigh seo in aineonn de scriseadh cuntasí." -#: contrib/auth/models.py:144 +#: contrib/auth/models.py:187 msgid "superuser status" msgstr "stádas forúsáideoir" -#: contrib/auth/models.py:144 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." +#: contrib/auth/models.py:187 +msgid "Designates that this user has all permissions without explicitly assigning them." msgstr "Sainíonn go bhfuil gach ceada ag an úsáideoir seo gan iad a cur le go díreach." -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:188 msgid "last login" msgstr "logáil deirneach" -#: contrib/auth/models.py:146 +#: contrib/auth/models.py:189 msgid "date joined" msgstr "Dáta teacht isteach" -#: contrib/auth/models.py:148 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." +#: contrib/auth/models.py:191 +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." msgstr "Breis leis na ceada sannta láimhe, faigheann an úsáideoir seo gach ceada sannta do na grúpaí a bhfuil sé/sí isteach in." -#: contrib/auth/models.py:149 +#: contrib/auth/models.py:192 msgid "user permissions" msgstr "ceada úsáideoira" -#: contrib/auth/models.py:153 +#: contrib/auth/models.py:196 +#: contrib/comments/models.py:50 +#: contrib/comments/models.py:168 msgid "user" msgstr "úsáideoir" -#: contrib/auth/models.py:154 +#: contrib/auth/models.py:197 msgid "users" msgstr "úsáideora" -#: contrib/auth/models.py:309 +#: contrib/auth/models.py:378 msgid "message" msgstr "teachtaireacht" -#: contrib/auth/views.py:52 +#: contrib/auth/views.py:60 msgid "Logged out" msgstr "Logáilte amach" -#: contrib/comments/models.py:71 contrib/comments/models.py:164 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 +#: forms/fields.py:416 +msgid "Enter a valid e-mail address." +msgstr "Cuir isteach seoladh ríomhphoist bhailí." + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "Inneachar" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "Meiteashonraí" + +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "bratach curtha leis" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "Bratach nótaí tráchta roghnaithe" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "ceadaithe" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "Cheadú nótaí tráchta roghnaithe" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "baineadh" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "Bain nótaí tráchta roghnaithe" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 nóta tráchta bhí rathúil %(action)s." +msgstr[1] "nótaí tráchta %(count)s a bhí sásúil %(action)s." +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "%(site_name)s nótaí" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "Nótaí tráchtaí is déanaí ar %(site_name)s" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "Ainm" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "R-phost" + +#: contrib/comments/forms.py:95 +#: contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 +#: db/models/fields/__init__.py:1118 +msgid "URL" +msgstr "URL" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "Nóta tráchta" + +#: contrib/comments/forms.py:175 +#, 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] "Féach ar do bhéal! Níl an focal %s ceadaithe anseo." +msgstr[1] "Féach ar do bhéal! Níl na focail %s ceadaithe anseo." + +#: contrib/comments/forms.py:182 +msgid "If you enter anything in this field your comment will be treated as spam" +msgstr "Má cuireann tú aon rud sa réimse seo, beidh do nóta déileálfar mar spam" + +#: contrib/comments/models.py:22 +#: contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "tíopa inneachar " + +#: contrib/comments/models.py:24 msgid "object ID" msgstr "oibiacht ID" -#: contrib/comments/models.py:72 -msgid "headline" -msgstr "ceannlíne" - -#: contrib/comments/models.py:73 contrib/comments/models.py:95 -#: contrib/comments/models.py:165 +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "Ainm úsáideoir" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "seoladh r-phost an t-úsáideoir" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "URL an t-úsáideora" + +#: contrib/comments/models.py:56 +#: contrib/comments/models.py:76 +#: contrib/comments/models.py:169 msgid "comment" msgstr "trácht" -#: contrib/comments/models.py:74 -msgid "rating #1" -msgstr "rátáil #1" - -#: contrib/comments/models.py:75 -msgid "rating #2" -msgstr "rátáil #2" - -#: contrib/comments/models.py:76 -msgid "rating #3" -msgstr "rátáil #3" +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "Dáta/am curtha isteach" + +#: contrib/comments/models.py:60 +#: db/models/fields/__init__.py:914 +msgid "IP address" +msgstr "Seol IP" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "poiblí" + +#: contrib/comments/models.py:62 +msgid "Uncheck this box to make the comment effectively disappear from the site." +msgstr "Díthiceáil an bosca seo chun an nóta a thógáil as an suíomh." + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "Scrioste" + +#: contrib/comments/models.py:65 +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "Seic an bosca seo dá bbéadh an nóta tráchta seo míchuí. Taispeantar \"Bhí an nóta tráchta scrioste\" in áit an nóta tráchta seo." #: contrib/comments/models.py:77 -msgid "rating #4" -msgstr "rátáil #4" - -#: contrib/comments/models.py:78 -msgid "rating #5" -msgstr "rátáil #5" - -#: contrib/comments/models.py:79 -msgid "rating #6" -msgstr "rátáil #6" - -#: contrib/comments/models.py:80 -msgid "rating #7" -msgstr "rátáil #7" - -#: contrib/comments/models.py:81 -msgid "rating #8" -msgstr "rátáil #8" - -#: contrib/comments/models.py:86 -msgid "is valid rating" -msgstr "is rátáil bailí" - -#: contrib/comments/models.py:87 contrib/comments/models.py:167 -msgid "date/time submitted" -msgstr "Dáta/am curtha isteach" - -#: contrib/comments/models.py:88 contrib/comments/models.py:168 -msgid "is public" -msgstr "poiblí" - -#: contrib/comments/models.py:90 -msgid "is removed" -msgstr "Scrioste" - -#: contrib/comments/models.py:90 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Seic an bosca seo dá bbéadh an nóta tráchta seo míchuí. Taispeantar \"Bhí an nóta tráchta scrioste\" in áit an nóta tráchta seo." - -#: contrib/comments/models.py:96 msgid "comments" msgstr "nótaí tráchta" -#: contrib/comments/models.py:128 contrib/comments/models.py:199 -msgid "Content object" -msgstr "Oibiacht inneachar" - -#: contrib/comments/models.py:156 +#: contrib/comments/models.py:119 +msgid "This comment was posted by an authenticated user and thus the name is read-only." +msgstr "Bhí an nóta tráchta póstailte trí uaire trí úsáideoir fíordheimhnithe mar sin tá an ainm léamh-amhain." + +#: contrib/comments/models.py:128 +msgid "This comment was posted by an authenticated user and thus the email is read-only." +msgstr "Bhí an nóta tráchta póstailte trí úsáideoir fíordeimhnite mar sin tá an r-phost léamh amháin." + +#: contrib/comments/models.py:153 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1422,280 +1487,217 @@ "\n" "http://%(domain)s%(url)s" -#: contrib/comments/models.py:166 -msgid "person's name" -msgstr "Ainm" - -#: contrib/comments/models.py:169 -msgid "ip address" -msgstr "seoladh ip" +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "brat" #: contrib/comments/models.py:171 -msgid "approved by staff" -msgstr "ceadaithe tríd an foireann" - -#: contrib/comments/models.py:175 -msgid "free comment" -msgstr "Nóta tráchta saor" - -#: contrib/comments/models.py:176 -msgid "free comments" -msgstr "Nótaí tráchtaí saoire" - -#: contrib/comments/models.py:227 -msgid "score" -msgstr "scór" - -#: contrib/comments/models.py:228 -msgid "score date" -msgstr "Dáta scór" - -#: contrib/comments/models.py:232 -msgid "karma score" -msgstr "Scór karma" - -#: contrib/comments/models.py:233 -msgid "karma scores" -msgstr "Scóra karma" - -#: contrib/comments/models.py:237 -#, python-format -msgid "%(score)d rating by %(user)s" -msgstr "%(score)d rátailte trí %(user)s" - -#: contrib/comments/models.py:254 -#, python-format -msgid "" -"This comment was flagged by %(user)s:\n" -"\n" -"%(text)s" -msgstr "" -"Bhí bratach curtha leis an nóta tráchta seo trí %(user)s:\n" -"\n" -"%(text)s" - -#: contrib/comments/models.py:262 -msgid "flag date" -msgstr "Dáta brait" - -#: contrib/comments/models.py:266 -msgid "user flag" -msgstr "Brat úsáideoir" - -#: contrib/comments/models.py:267 -msgid "user flags" -msgstr "Brait úsáideoira" - -#: contrib/comments/models.py:271 -#, python-format -msgid "Flag by %r" -msgstr "Cuir brat leis roimh %r" - -#: contrib/comments/models.py:277 -msgid "deletion date" -msgstr "Dáta scrioseadh" - -#: contrib/comments/models.py:280 -msgid "moderator deletion" -msgstr "Scroiseadh modhnóir" - -#: contrib/comments/models.py:281 -msgid "moderator deletions" -msgstr "Scrios modhnóra" - -#: contrib/comments/models.py:285 -#, python-format -msgid "Moderator deletion by %r" -msgstr "Scrios modhnóir trí %r" - -#: contrib/comments/templates/comments/form.html:8 -msgid "Forgotten your password?" -msgstr "Dearmad déanta ar do focal faire?" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Rátála" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Riachtanach" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Roghnach" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Post griangraf" - -#: contrib/comments/templates/comments/form.html:28 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Nóta tráchta" - -#: contrib/comments/templates/comments/form.html:35 -#: contrib/comments/templates/comments/freeform.html:10 -msgid "Preview comment" +msgid "date" +msgstr "dáta" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "brat nóta tráchta" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "bratacha nótaí tráchta" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "Ceadaigh nóta tráchta" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "Cuir an nóta seo poiblí?" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "Fhormheas" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "Go raibh maith agait le hadhaigh to formheas" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "Thanks for taking the time to improve the quality of discussion on our site" +msgstr "Go raibh maith agat as an am chun feabhas a chur ar chaighdeán na díospóireachta ar ár suíomh" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "Tóg amach nóta tráchta" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "Dáiríre, cuir amach an nóta seo?" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "Go raibh maith agat le hadhaigh do thógail amach" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "Cuir brat ar an nóta tráchta seo" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "Go deimhin cuir brat ar an nóta tráchta seo?" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "Brat" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "Go raibh maith agat le hadhaigh do brat" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "Post" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "Réamhamharc" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "Go raibh maith agat le hadhaign do nóta tráchta" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "Go raibh maith agat le hadhaigh do nóta tráchta" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" msgstr "Nóta tráchta réamhamharc" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Do chuid ainm:" - -#: contrib/comments/views/comments.py:76 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Tá an rátáil seo ag teastail mar cuir tú rátáil amhain eile isteach ar a laghad." - -#: contrib/comments/views/comments.py:160 -#, python-format -msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" -"\n" -"%(text)s" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" -"\n" -"%(text)s" -msgstr "" -"Bhí an nóta tráchta póstailte trí úsáideoir a cuir níos lú ná %(count)s nótaí tráchtaí\n" -"\n" -"%(text)s" -"Bhí an nóta tráchta póstailte trí úsáideoir a cuir níos lú ná %(count)s nótaí tráchtaí\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:165 -#, python-format -msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" -msgstr "Bhí an nóta tráchta póstailte trí úsáideoir ait \n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:238 -#: contrib/comments/views/comments.py:331 -msgid "Only POSTs are allowed" -msgstr "POSTs amhain ceadaithe" - -#: contrib/comments/views/comments.py:242 -#: contrib/comments/views/comments.py:335 -msgid "One or more of the required fields wasn't submitted" -msgstr "Níor curtha isteach ceann amhain nó níos mó de na réimse riachtanach" - -#: contrib/comments/views/comments.py:246 -#: contrib/comments/views/comments.py:337 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "Cuir duine éigin isteach leis an foirm nóta tráchta (fadbh slándála)" - -#: contrib/comments/views/comments.py:256 -#: contrib/comments/views/comments.py:343 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "" -"Bhí paraiméadar targaid mícheart ag an foirm nóta tráchta -- bhí ID an oibiacht neamhbhailí" - -#: contrib/comments/views/comments.py:307 -#: contrib/comments/views/comments.py:372 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Níor sholáthair an foirm nóta tráchta 'réamhamharc' nó 'post'" - -#: contrib/comments/views/karma.py:21 -msgid "Anonymous users cannot vote" -msgstr "Níl cead ag úsáideoira anaithnid vótáil" - -#: contrib/comments/views/karma.py:25 -msgid "Invalid comment ID" -msgstr "Nóta tráchta ID neamhbhailí" - -#: contrib/comments/views/karma.py:27 -msgid "No voting for yourself" -msgstr "Vótáil leat féin coiscthe" - -#: contrib/contenttypes/models.py:67 +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Le do thoil ceartaigh an botún thíos." +msgstr[1] "Le do thoil ceartaigh na botúin thíos." + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "Seol do Nóta tráchta" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "nó déan aithraithe" + +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "píotón samhail aicme ainm" -#: contrib/contenttypes/models.py:71 -msgid "content type" -msgstr "tíopa inneachar " - -#: contrib/contenttypes/models.py:72 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "tíopaI inneachair" #: contrib/flatpages/admin.py:9 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "Sampla '/about/contact/' Déan cinnte go bhfuil príomhslaid agus cúlslais agat." -#: contrib/flatpages/admin.py:11 core/validators.py:76 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." +#: contrib/flatpages/admin.py:11 +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." msgstr "Níl ach litreacha, uimhreacha, slaiseacha, fólíniú agus daiseanna ceadaithe." #: contrib/flatpages/admin.py:22 msgid "Advanced options" msgstr "Ard-rogha" -#: contrib/flatpages/models.py:9 +#: contrib/flatpages/models.py:8 msgid "title" msgstr "teideal" +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "inneachar" + #: contrib/flatpages/models.py:10 -msgid "content" -msgstr "suaimhneach" +msgid "enable comments" +msgstr "Cuir nótaí tráchta ar chumas" #: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "Cuir nótaí tráchta ar chumas" +msgid "template name" +msgstr "ainm an teimpléid" #: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "ainm an teimpléid" +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "Sampla: 'flatpages/contact_page.html'. Muna bhfuil sé ar soláthair, bainfidh an córás úsáid as 'flatpages/default.html'." + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "clárúchán riachtanach" #: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Sampla: 'flatpages/contact_page.html'. Muna bhfuil sé ar soláthair, bainfidh an córás úsáid as 'flatpages/default.html'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "clárúchán riachtanach" - -#: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "Dá mbéadh é seo seicailte, ní beidh ach úsáideora logáilte isteach in ann an leathanach seo a fheiceail" -#: contrib/flatpages/models.py:19 +#: contrib/flatpages/models.py:18 msgid "flat page" msgstr "leacleathanach" -#: contrib/flatpages/models.py:20 +#: contrib/flatpages/models.py:19 msgid "flat pages" msgstr "leacleathanaigh" -#: contrib/gis/forms/fields.py:10 +#: contrib/formtools/wizard.py:134 +msgid "We apologize, but your form has expired. Please continue filling out the form from this page." +msgstr "Gabh ár leithscéal, ach tá do fhoirm in éag. Lean ar aghaidh le do thoil líonadh amach an fhoirm ón leathanach seo." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "GIS an bonn réimse - léarscáileanna chun an Sonraíocht OpenGIS cineál Céimseata." + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "Pointe" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "Líne teaghrán" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "Polagán" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "Il-phointe" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "Il-líne teaghrán" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "Il polagán" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "Céimseata bhailiú" + +#: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Ní soláthair méid geoiméadracht" -#: contrib/gis/forms/fields.py:11 -msgid "Invalid Geometry value." +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." msgstr "Méid geoiméadracht neamhbhailí" -#: contrib/gis/forms/fields.py:12 -msgid "Invalid Geometry type." +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." msgstr "Tíopa geoiméadracht neamhbhailí" +#: contrib/gis/forms/fields.py:20 +msgid "An error occurred when transforming the geometry to the SRID of the geometry form field." +msgstr "Tharla earráid ag claochlú an geoiméadracht go dtí SRID an réimse fhoirm geoiméadracht." + #: contrib/humanize/templatetags/humanize.py:19 msgid "th" msgstr "ú" @@ -1715,17 +1717,23 @@ #: contrib/humanize/templatetags/humanize.py:51 #, python-format msgid "%(value).1f million" -msgstr "%(value).1f milliún" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milliún" +msgstr[1] "%(value).1f milliún" #: contrib/humanize/templatetags/humanize.py:54 #, python-format msgid "%(value).1f billion" -msgstr "%(value).1f billiún" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f billiún" +msgstr[1] "%(value).1f billiún" #: contrib/humanize/templatetags/humanize.py:57 #, python-format msgid "%(value).1f trillion" -msgstr "%(value).1f trilliún" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f trilliún" +msgstr[1] "%(value).1f trilliún" #: contrib/humanize/templatetags/humanize.py:73 msgid "one" @@ -1775,25 +1783,27 @@ msgid "yesterday" msgstr "inné" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Cuir isteach cód póstal ins an formáid NNNN nó ANNNNAAA" -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Teastaíonn an réimse seo uimhreacha amháin." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Teastaíonn an réimse seo 7 nó 8 digite." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Cuir isteach CUIT bailí i formáid XX-XXXXXXXX-X nó XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT neamhbailí" @@ -1833,84 +1843,83 @@ msgid "Vienna" msgstr "Vín" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 +#: contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Cuir isteach cód zip ins an formáid XXXX." #: contrib/localflavor/at/forms.py:48 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." -msgstr "" - -#: contrib/localflavor/au/forms.py:16 +msgstr "Iontráil uimhir Ostaire Slándáil Shóisialta bailí i bhformáid XXXX XXXXXX." + +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." -msgstr "" - -#: contrib/localflavor/br/forms.py:21 +msgstr "Iontráil cód poist 4 dhigit." + +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "" - -#: contrib/localflavor/br/forms.py:30 +msgstr "Iontráil zip-cód i bhformáid XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "" - -#: contrib/localflavor/br/forms.py:58 -msgid "" -"Select a valid brazilian state. That state is not one of the available " -"states." -msgstr "" - -#: contrib/localflavor/br/forms.py:94 -msgid "Invalid CPF number." -msgstr "" +msgstr "Ní mór Uimhreacha teileafóin a chur i XX-XXXX-XXXX format." + +#: contrib/localflavor/br/forms.py:59 +msgid "Select a valid brazilian state. That state is not one of the available states." +msgstr "Roghnaigh stát na Brasaíle bailí. Ní thugann an Stát sin ar cheann de na stáit atá ar fáil." #: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "Uimhir CPF neamhbhailí." + +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." -msgstr "" - -#: contrib/localflavor/br/forms.py:134 +msgstr "Éilíonn an réimse seo ag an chuid is mó dhigit 11 nó 14 de charachtair." + +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." -msgstr "" - -#: contrib/localflavor/br/forms.py:136 +msgstr "Neamhbhailí CNPJ uimhir." + +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" -msgstr "" - -#: contrib/localflavor/ca/forms.py:17 +msgstr "Éilíonn an réimse seo ar a laghad 14 digití" + +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." -msgstr "" - -#: contrib/localflavor/ca/forms.py:88 +msgstr "Iontráil cód poist i bhformáid XXX XXX." + +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "" +msgstr "Iontráil uimhir Cheanada Árachais Shóisialaigh bailí i bhformáid XXX-XXX-XXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" -msgstr "" +msgstr "Aargau" #: contrib/localflavor/ch/ch_states.py:6 msgid "Appenzell Innerrhoden" -msgstr "" +msgstr "Appenzell Innerrhoden" #: contrib/localflavor/ch/ch_states.py:7 msgid "Appenzell Ausserrhoden" -msgstr "" +msgstr "Appenzell Ausserrhoden" #: contrib/localflavor/ch/ch_states.py:8 msgid "Basel-Stadt" -msgstr "" +msgstr "Basel-Stadt" #: contrib/localflavor/ch/ch_states.py:9 msgid "Basel-Land" -msgstr "" +msgstr "Basel-Talún" #: contrib/localflavor/ch/ch_states.py:10 msgid "Berne" -msgstr "" +msgstr "Berne" #: contrib/localflavor/ch/ch_states.py:11 msgid "Fribourg" -msgstr "" +msgstr "Fribourg" #: contrib/localflavor/ch/ch_states.py:12 msgid "Geneva" @@ -1918,101 +1927,176 @@ #: contrib/localflavor/ch/ch_states.py:13 msgid "Glarus" -msgstr "" +msgstr "Glarus" #: contrib/localflavor/ch/ch_states.py:14 msgid "Graubuenden" -msgstr "" +msgstr "Graubuenden" #: contrib/localflavor/ch/ch_states.py:15 msgid "Jura" -msgstr "" +msgstr "Jura" #: contrib/localflavor/ch/ch_states.py:16 msgid "Lucerne" -msgstr "" +msgstr "Lucerne" #: contrib/localflavor/ch/ch_states.py:17 msgid "Neuchatel" -msgstr "" +msgstr "Neuchatel" #: contrib/localflavor/ch/ch_states.py:18 msgid "Nidwalden" -msgstr "" +msgstr "Nidwalden" #: contrib/localflavor/ch/ch_states.py:19 msgid "Obwalden" -msgstr "" +msgstr "Obwalden" #: contrib/localflavor/ch/ch_states.py:20 msgid "Schaffhausen" -msgstr "" +msgstr "Schaffhausen" #: contrib/localflavor/ch/ch_states.py:21 msgid "Schwyz" -msgstr "" +msgstr "Schwyz" #: contrib/localflavor/ch/ch_states.py:22 msgid "Solothurn" -msgstr "" +msgstr "Solothurn" #: contrib/localflavor/ch/ch_states.py:23 msgid "St. Gallen" -msgstr "" +msgstr "St Gallen" #: contrib/localflavor/ch/ch_states.py:24 msgid "Thurgau" -msgstr "" +msgstr "Thurgau" #: contrib/localflavor/ch/ch_states.py:25 msgid "Ticino" -msgstr "" +msgstr "Ticino" #: contrib/localflavor/ch/ch_states.py:26 msgid "Uri" -msgstr "" +msgstr "Uri" #: contrib/localflavor/ch/ch_states.py:27 msgid "Valais" -msgstr "" +msgstr "Valais" #: contrib/localflavor/ch/ch_states.py:28 msgid "Vaud" -msgstr "" +msgstr "Vaud" #: contrib/localflavor/ch/ch_states.py:29 msgid "Zug" -msgstr "" +msgstr "Zug" #: contrib/localflavor/ch/ch_states.py:30 msgid "Zurich" -msgstr "" - -#: contrib/localflavor/ch/forms.py:64 -msgid "" -"Enter a valid Swiss identity or passport card number in X1234567<0 or " -"1234567890 format." -msgstr "" - -#: contrib/localflavor/cl/forms.py:29 -msgid "Enter a valid Chilean RUT." -msgstr "" +msgstr "Zürich" + +#: contrib/localflavor/ch/forms.py:65 +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "Iontráil aitheantais hEilvéise bailí nó uimhir pas cárta i bhformáid X1234567<0 nó 1234567890." #: contrib/localflavor/cl/forms.py:30 -msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "" +msgid "Enter a valid Chilean RUT." +msgstr "Iontráil RUT Chilean bailí." #: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Iontráil RUT bailí Chilean. Is é an fhormáid XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." -msgstr "" +msgstr "Níl an RUT Chilean bailí." + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "Prague" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "Réigiún Central Bohemian" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "Réigiún Bohemian Theas" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "Pilsen Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "Carlsbad Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "Usti Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "Liberec Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "Hradec Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "Pardubice Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "Vysocina Réigiún" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "Réigiún Moravian Theas" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "Réigiún Olomouc" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "Réigiún Zlin" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "Réigiún Moravian-Silesian" + +#: contrib/localflavor/cz/forms.py:28 +#: contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Iontráil cód poist i bhformáid XXXXX nó XXX XX." + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Iontráil uimhir breithe i bhformáid XXXXXX/XXXX nó XXXXXXXXXX." + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Paraiméadar inscne roghnach neamhbhailí, is iad 'f' agus 'm' na luachanna bailí" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "Cuir isteach uimhir breithe bailí." + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "Cuir isteach uimhir IC bailí." #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" -msgstr "" +msgstr "Baden-Wuerttemberg" #: contrib/localflavor/de/de_states.py:6 msgid "Bavaria" -msgstr "" +msgstr "An Bhaváir" #: contrib/localflavor/de/de_states.py:7 msgid "Berlin" @@ -2020,1526 +2104,2057 @@ #: contrib/localflavor/de/de_states.py:8 msgid "Brandenburg" -msgstr "" +msgstr "Brandenburg" #: contrib/localflavor/de/de_states.py:9 msgid "Bremen" -msgstr "" +msgstr "Bremen" #: contrib/localflavor/de/de_states.py:10 msgid "Hamburg" -msgstr "" +msgstr "Hamburg" #: contrib/localflavor/de/de_states.py:11 msgid "Hessen" -msgstr "" +msgstr "Hessen" #: contrib/localflavor/de/de_states.py:12 msgid "Mecklenburg-Western Pomerania" -msgstr "" +msgstr "Mecklenburg-Pomerania Thiar" #: contrib/localflavor/de/de_states.py:13 msgid "Lower Saxony" -msgstr "" +msgstr "An tSacsain Íochtair" #: contrib/localflavor/de/de_states.py:14 msgid "North Rhine-Westphalia" -msgstr "" +msgstr "Réin Thuaidh-Westphalia" #: contrib/localflavor/de/de_states.py:15 msgid "Rhineland-Palatinate" -msgstr "" +msgstr "Dúiche na Réine-Palatinate" #: contrib/localflavor/de/de_states.py:16 msgid "Saarland" -msgstr "" +msgstr "Saarland" #: contrib/localflavor/de/de_states.py:17 msgid "Saxony" -msgstr "" +msgstr "An tSacsain" #: contrib/localflavor/de/de_states.py:18 msgid "Saxony-Anhalt" -msgstr "" +msgstr "An tSacsain-Anhalt" #: contrib/localflavor/de/de_states.py:19 msgid "Schleswig-Holstein" -msgstr "" +msgstr "Schleswig-Holstein" #: contrib/localflavor/de/de_states.py:20 msgid "Thuringia" -msgstr "" - -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +msgstr "Thuringia" + +#: contrib/localflavor/de/forms.py:15 +#: contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." -msgstr "" - -#: contrib/localflavor/de/forms.py:41 -msgid "" -"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " -"format." -msgstr "" +msgstr "Iontráil zip-cód i bhformáid XXXXX." + +#: contrib/localflavor/de/forms.py:42 +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "Iontráil uimhir cárta aitheantais na Gearmáine bailí i bhformáid XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" -msgstr "" +msgstr "Arava" #: contrib/localflavor/es/es_provinces.py:6 msgid "Albacete" -msgstr "" +msgstr "Albacete" #: contrib/localflavor/es/es_provinces.py:7 msgid "Alacant" -msgstr "" +msgstr "Alacant" #: contrib/localflavor/es/es_provinces.py:8 msgid "Almeria" -msgstr "" +msgstr "Almeria" #: contrib/localflavor/es/es_provinces.py:9 msgid "Avila" -msgstr "" +msgstr "Ávila" #: contrib/localflavor/es/es_provinces.py:10 msgid "Badajoz" -msgstr "" +msgstr "Badajoz" #: contrib/localflavor/es/es_provinces.py:11 msgid "Illes Balears" -msgstr "" +msgstr "Illes Balears" #: contrib/localflavor/es/es_provinces.py:12 msgid "Barcelona" -msgstr "" +msgstr "Barcelona" #: contrib/localflavor/es/es_provinces.py:13 msgid "Burgos" -msgstr "" +msgstr "Burgos" #: contrib/localflavor/es/es_provinces.py:14 msgid "Caceres" -msgstr "" +msgstr "Cáceres" #: contrib/localflavor/es/es_provinces.py:15 msgid "Cadiz" -msgstr "" +msgstr "Cádiz" #: contrib/localflavor/es/es_provinces.py:16 msgid "Castello" -msgstr "" +msgstr "Castello" #: contrib/localflavor/es/es_provinces.py:17 msgid "Ciudad Real" -msgstr "" +msgstr "Ciudad Real" #: contrib/localflavor/es/es_provinces.py:18 msgid "Cordoba" -msgstr "" +msgstr "Cordoba" #: contrib/localflavor/es/es_provinces.py:19 msgid "A Coruna" -msgstr "" +msgstr "A Coruña" #: contrib/localflavor/es/es_provinces.py:20 msgid "Cuenca" -msgstr "" +msgstr "Cuenca" #: contrib/localflavor/es/es_provinces.py:21 msgid "Girona" -msgstr "" +msgstr "Girona" #: contrib/localflavor/es/es_provinces.py:22 msgid "Granada" -msgstr "" +msgstr "Granada" #: contrib/localflavor/es/es_provinces.py:23 msgid "Guadalajara" -msgstr "" +msgstr "Guadalajara" #: contrib/localflavor/es/es_provinces.py:24 msgid "Guipuzkoa" -msgstr "" +msgstr "Guipuzkoa" #: contrib/localflavor/es/es_provinces.py:25 msgid "Huelva" -msgstr "" +msgstr "Huelva" #: contrib/localflavor/es/es_provinces.py:26 msgid "Huesca" -msgstr "" +msgstr "Huesca" #: contrib/localflavor/es/es_provinces.py:27 msgid "Jaen" -msgstr "" +msgstr "Jaen" #: contrib/localflavor/es/es_provinces.py:28 msgid "Leon" -msgstr "" +msgstr "Leon" #: contrib/localflavor/es/es_provinces.py:29 msgid "Lleida" -msgstr "" +msgstr "Lleida" #: contrib/localflavor/es/es_provinces.py:30 #: contrib/localflavor/es/es_regions.py:17 msgid "La Rioja" -msgstr "" +msgstr "La Rioja" #: contrib/localflavor/es/es_provinces.py:31 msgid "Lugo" -msgstr "" +msgstr "Lugo" #: contrib/localflavor/es/es_provinces.py:32 #: contrib/localflavor/es/es_regions.py:18 msgid "Madrid" -msgstr "" +msgstr "Maidrid" #: contrib/localflavor/es/es_provinces.py:33 msgid "Malaga" -msgstr "" +msgstr "Málaga" #: contrib/localflavor/es/es_provinces.py:34 msgid "Murcia" -msgstr "" +msgstr "Murcia" #: contrib/localflavor/es/es_provinces.py:35 msgid "Navarre" -msgstr "" +msgstr "Navarre" #: contrib/localflavor/es/es_provinces.py:36 msgid "Ourense" -msgstr "" +msgstr "Ourense" #: contrib/localflavor/es/es_provinces.py:37 msgid "Asturias" -msgstr "" +msgstr "Asturias" #: contrib/localflavor/es/es_provinces.py:38 msgid "Palencia" -msgstr "" +msgstr "Palencia" #: contrib/localflavor/es/es_provinces.py:39 msgid "Las Palmas" -msgstr "" +msgstr "Las Palmas" #: contrib/localflavor/es/es_provinces.py:40 msgid "Pontevedra" -msgstr "" +msgstr "Pontevedra" #: contrib/localflavor/es/es_provinces.py:41 msgid "Salamanca" -msgstr "" +msgstr "Salamanca" #: contrib/localflavor/es/es_provinces.py:42 msgid "Santa Cruz de Tenerife" -msgstr "" +msgstr "Santa Cruz de Tenerife" #: contrib/localflavor/es/es_provinces.py:43 #: contrib/localflavor/es/es_regions.py:11 msgid "Cantabria" -msgstr "" +msgstr "Cantabria" #: contrib/localflavor/es/es_provinces.py:44 msgid "Segovia" -msgstr "" +msgstr "Segovia" #: contrib/localflavor/es/es_provinces.py:45 msgid "Seville" -msgstr "" +msgstr "Sevilla" #: contrib/localflavor/es/es_provinces.py:46 msgid "Soria" -msgstr "" +msgstr "Soria" #: contrib/localflavor/es/es_provinces.py:47 msgid "Tarragona" -msgstr "" +msgstr "Tarragona" #: contrib/localflavor/es/es_provinces.py:48 msgid "Teruel" -msgstr "" +msgstr "Teruel" #: contrib/localflavor/es/es_provinces.py:49 msgid "Toledo" -msgstr "" +msgstr "Toledo" #: contrib/localflavor/es/es_provinces.py:50 msgid "Valencia" -msgstr "" +msgstr "Valencia" #: contrib/localflavor/es/es_provinces.py:51 msgid "Valladolid" -msgstr "" +msgstr "Valladolid" #: contrib/localflavor/es/es_provinces.py:52 msgid "Bizkaia" -msgstr "" +msgstr "Bizkaia" #: contrib/localflavor/es/es_provinces.py:53 msgid "Zamora" -msgstr "" +msgstr "Zamora" #: contrib/localflavor/es/es_provinces.py:54 msgid "Zaragoza" -msgstr "" +msgstr "Zaragoza" #: contrib/localflavor/es/es_provinces.py:55 msgid "Ceuta" -msgstr "" +msgstr "Ceuta" #: contrib/localflavor/es/es_provinces.py:56 msgid "Melilla" -msgstr "" +msgstr "Melilla" #: contrib/localflavor/es/es_regions.py:5 msgid "Andalusia" -msgstr "" +msgstr "Andalusia" #: contrib/localflavor/es/es_regions.py:6 msgid "Aragon" -msgstr "" +msgstr "Aragon" #: contrib/localflavor/es/es_regions.py:7 msgid "Principality of Asturias" -msgstr "" +msgstr "Phrionsacht Asturias" #: contrib/localflavor/es/es_regions.py:8 msgid "Balearic Islands" -msgstr "" +msgstr "Na hOileáin Bhailéaracha" #: contrib/localflavor/es/es_regions.py:9 msgid "Basque Country" -msgstr "" +msgstr "Tír na mBascach" #: contrib/localflavor/es/es_regions.py:10 msgid "Canary Islands" -msgstr "" +msgstr "Na hOileáin Chanáracha" #: contrib/localflavor/es/es_regions.py:12 msgid "Castile-La Mancha" -msgstr "" +msgstr "Castilla-La Mancha" #: contrib/localflavor/es/es_regions.py:13 msgid "Castile and Leon" -msgstr "" +msgstr "Castilla agus Leon" #: contrib/localflavor/es/es_regions.py:14 msgid "Catalonia" -msgstr "" +msgstr "An Chatalóin" #: contrib/localflavor/es/es_regions.py:15 msgid "Extremadura" -msgstr "" +msgstr "Extremadura" #: contrib/localflavor/es/es_regions.py:16 msgid "Galicia" -msgstr "" +msgstr "Galicia" #: contrib/localflavor/es/es_regions.py:19 msgid "Region of Murcia" -msgstr "" +msgstr "Réigiún de Murcia" #: contrib/localflavor/es/es_regions.py:20 msgid "Foral Community of Navarre" -msgstr "" +msgstr "Chomhphobail Foral de Navarre" #: contrib/localflavor/es/es_regions.py:21 msgid "Valencian Community" -msgstr "" - -#: contrib/localflavor/es/forms.py:19 +msgstr "Valencian Community" + +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." -msgstr "" - -#: contrib/localflavor/es/forms.py:39 -msgid "" -"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " -"9XXXXXXXX." -msgstr "" - -#: contrib/localflavor/es/forms.py:66 -msgid "Please enter a valid NIF, NIE, or CIF." -msgstr "" +msgstr "Iontráil cód poist bailí i raon agus formáid 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:40 +msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." +msgstr "Iontráil uimhir theileafóin bailí i gceann de na formáidí 6XXXXXXXX, 8XXXXXXXX nó 9XXXXXXXX." #: contrib/localflavor/es/forms.py:67 -msgid "Please enter a valid NIF or NIE." -msgstr "" +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Cuir isteach NIF bailí, NIE, nó CIF." #: contrib/localflavor/es/forms.py:68 -msgid "Invalid checksum for NIF." -msgstr "" +msgid "Please enter a valid NIF or NIE." +msgstr "Cuir isteach NIF bailí nó NIE." #: contrib/localflavor/es/forms.py:69 -msgid "Invalid checksum for NIE." -msgstr "" +msgid "Invalid checksum for NIF." +msgstr "Sheiceála neamhbhailí do NIF." #: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "Sheiceála neamhbhailí do NIE." + +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." -msgstr "" - -#: contrib/localflavor/es/forms.py:142 -msgid "" -"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "" +msgstr "Sheiceála neamhbhailí do CIF." #: contrib/localflavor/es/forms.py:143 +msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Cuir isteach uimhir chuntais bainc bailí i bhformáid XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." -msgstr "" - -#: contrib/localflavor/fi/forms.py:28 +msgstr "Sheiceála neamhbhailí do uimhir cuntas bainc." + +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." -msgstr "" - -#: contrib/localflavor/in_/forms.py:14 +msgstr "Cuir isteach uimhir Fionlainne slándála sóisialta bailí." + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Ní mór Uimhreacha teileafóin a chur i bhformáid 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Iontráil cód poist bailí" + +#: contrib/localflavor/id/forms.py:68 +#: contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Iontráil uimhir theileafóin bailí" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Cuir isteach uimhir feithicle bailí pláta cheadúnas" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Cuir isteach uimhir NIK/KTP bailí" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi Barat" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Cór gconsalacht" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Cór Taidhleoireachta" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Rialtas Feidearálach" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Aontroim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Ard Mhacha" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Ceatharlach" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "An Cabhan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "An Clar" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Corcaigh" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Doire" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Dún na nGall" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "an Dún" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Baile Atha Cliath" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fear Manach" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Gaillimh" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Chiarrai" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Cill Dara" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Cill Chainnigh" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laoise" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Liatroim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Luimneach" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "An Longfort" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Lú" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mhaigh Eo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "an Mhí" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Muineachán" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Uíbh Fhailí" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Ros Comain" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligeach" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tiobraid Arann" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tír Eoghain" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Port Láirge" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Na hIarmhí" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Loch Garman" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Cill Mhantáin" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." -msgstr "" - -#: contrib/localflavor/is_/forms.py:17 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "" +msgstr "Iontráil zip-cód i bhformáid XXXXXXX." #: contrib/localflavor/is_/forms.py:18 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Cuir isteach uimhir aitheantais bailí hÍoslainne. Is é an fhormáid XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." -msgstr "" - -#: contrib/localflavor/it/forms.py:14 +msgstr "Níl an uimhir aitheantais hÍoslainne bailí." + +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." -msgstr "" - -#: contrib/localflavor/it/forms.py:43 +msgstr "Iontráil zip-cód bailí." + +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." -msgstr "" - -#: contrib/localflavor/it/forms.py:68 +msgstr "Iontráil uimhir Slándáil Shóisialta bailí." + +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." -msgstr "" - -#: contrib/localflavor/jp/forms.py:17 +msgstr "Iontráil uimhir CBL bailí." + +#: contrib/localflavor/jp/forms.py:16 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "" +msgstr "Iontráil cód poist i bhformáid XXXXXXX nó XXX-XXXX." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" -msgstr "" +msgstr "Hokkaido" #: contrib/localflavor/jp/jp_prefectures.py:5 msgid "Aomori" -msgstr "" +msgstr "Aomori" #: contrib/localflavor/jp/jp_prefectures.py:6 msgid "Iwate" -msgstr "" +msgstr "Iwate" #: contrib/localflavor/jp/jp_prefectures.py:7 msgid "Miyagi" -msgstr "" +msgstr "Miyagi" #: contrib/localflavor/jp/jp_prefectures.py:8 msgid "Akita" -msgstr "" +msgstr "Akita" #: contrib/localflavor/jp/jp_prefectures.py:9 msgid "Yamagata" -msgstr "" +msgstr "Yamagata" #: contrib/localflavor/jp/jp_prefectures.py:10 msgid "Fukushima" -msgstr "" +msgstr "Fukushima" #: contrib/localflavor/jp/jp_prefectures.py:11 msgid "Ibaraki" -msgstr "" +msgstr "Ibaraki" #: contrib/localflavor/jp/jp_prefectures.py:12 msgid "Tochigi" -msgstr "" +msgstr "Tochigi" #: contrib/localflavor/jp/jp_prefectures.py:13 msgid "Gunma" -msgstr "" +msgstr "Gunma" #: contrib/localflavor/jp/jp_prefectures.py:14 msgid "Saitama" -msgstr "" +msgstr "Saitama" #: contrib/localflavor/jp/jp_prefectures.py:15 msgid "Chiba" -msgstr "" +msgstr "Chiba" #: contrib/localflavor/jp/jp_prefectures.py:16 msgid "Tokyo" -msgstr "" +msgstr "Tóiceo" #: contrib/localflavor/jp/jp_prefectures.py:17 msgid "Kanagawa" -msgstr "" +msgstr "Kanagawa" #: contrib/localflavor/jp/jp_prefectures.py:18 msgid "Yamanashi" -msgstr "" +msgstr "Yamanashi" #: contrib/localflavor/jp/jp_prefectures.py:19 msgid "Nagano" -msgstr "" +msgstr "Nagano" #: contrib/localflavor/jp/jp_prefectures.py:20 msgid "Niigata" -msgstr "" +msgstr "Niigata" #: contrib/localflavor/jp/jp_prefectures.py:21 msgid "Toyama" -msgstr "" +msgstr "Toyama" #: contrib/localflavor/jp/jp_prefectures.py:22 msgid "Ishikawa" -msgstr "" +msgstr "Ishikawa" #: contrib/localflavor/jp/jp_prefectures.py:23 msgid "Fukui" -msgstr "" +msgstr "Fukui" #: contrib/localflavor/jp/jp_prefectures.py:24 msgid "Gifu" -msgstr "" +msgstr "Gifu" #: contrib/localflavor/jp/jp_prefectures.py:25 msgid "Shizuoka" -msgstr "" +msgstr "Shizuoka" #: contrib/localflavor/jp/jp_prefectures.py:26 msgid "Aichi" -msgstr "" +msgstr "Aichi" #: contrib/localflavor/jp/jp_prefectures.py:27 msgid "Mie" -msgstr "" +msgstr "Mie" #: contrib/localflavor/jp/jp_prefectures.py:28 msgid "Shiga" -msgstr "" +msgstr "Shiga" #: contrib/localflavor/jp/jp_prefectures.py:29 msgid "Kyoto" -msgstr "" +msgstr "Kyoto" #: contrib/localflavor/jp/jp_prefectures.py:30 msgid "Osaka" -msgstr "" +msgstr "Osaka" #: contrib/localflavor/jp/jp_prefectures.py:31 msgid "Hyogo" -msgstr "" +msgstr "Hyogo" #: contrib/localflavor/jp/jp_prefectures.py:32 msgid "Nara" -msgstr "" +msgstr "Nara" #: contrib/localflavor/jp/jp_prefectures.py:33 msgid "Wakayama" -msgstr "" +msgstr "Wakayama" #: contrib/localflavor/jp/jp_prefectures.py:34 msgid "Tottori" -msgstr "" +msgstr "Tottori" #: contrib/localflavor/jp/jp_prefectures.py:35 msgid "Shimane" -msgstr "" +msgstr "Shimane" #: contrib/localflavor/jp/jp_prefectures.py:36 msgid "Okayama" -msgstr "" +msgstr "Okayama" #: contrib/localflavor/jp/jp_prefectures.py:37 msgid "Hiroshima" -msgstr "" +msgstr "Hiroshima" #: contrib/localflavor/jp/jp_prefectures.py:38 msgid "Yamaguchi" -msgstr "" +msgstr "Yamaguchi" #: contrib/localflavor/jp/jp_prefectures.py:39 msgid "Tokushima" -msgstr "" +msgstr "Tokushima" #: contrib/localflavor/jp/jp_prefectures.py:40 msgid "Kagawa" -msgstr "" +msgstr "Kagawa" #: contrib/localflavor/jp/jp_prefectures.py:41 msgid "Ehime" -msgstr "" +msgstr "Ehime" #: contrib/localflavor/jp/jp_prefectures.py:42 msgid "Kochi" -msgstr "" +msgstr "Kochi" #: contrib/localflavor/jp/jp_prefectures.py:43 msgid "Fukuoka" -msgstr "" +msgstr "Fukuoka" #: contrib/localflavor/jp/jp_prefectures.py:44 msgid "Saga" -msgstr "" +msgstr "Saga" #: contrib/localflavor/jp/jp_prefectures.py:45 msgid "Nagasaki" -msgstr "" +msgstr "Nagasaki" #: contrib/localflavor/jp/jp_prefectures.py:46 msgid "Kumamoto" -msgstr "" +msgstr "Kumamoto" #: contrib/localflavor/jp/jp_prefectures.py:47 msgid "Oita" -msgstr "" +msgstr "Oita" #: contrib/localflavor/jp/jp_prefectures.py:48 msgid "Miyazaki" -msgstr "" +msgstr "Miyazaki" #: contrib/localflavor/jp/jp_prefectures.py:49 msgid "Kagoshima" -msgstr "" +msgstr "Kagoshima" #: contrib/localflavor/jp/jp_prefectures.py:50 msgid "Okinawa" -msgstr "" +msgstr "Okinawa" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Iontráil uimhir ID Sibhialta Kuwati bailí" #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" -msgstr "" +msgstr "Aguascalientes" #: contrib/localflavor/mx/mx_states.py:13 msgid "Baja California" -msgstr "" +msgstr "Baja California" #: contrib/localflavor/mx/mx_states.py:14 msgid "Baja California Sur" -msgstr "" +msgstr "Baja California an Ridire" #: contrib/localflavor/mx/mx_states.py:15 msgid "Campeche" -msgstr "" +msgstr "Campeche" #: contrib/localflavor/mx/mx_states.py:16 msgid "Chihuahua" -msgstr "" +msgstr "Chihuahua" #: contrib/localflavor/mx/mx_states.py:17 msgid "Chiapas" -msgstr "" +msgstr "Chiapas" #: contrib/localflavor/mx/mx_states.py:18 msgid "Coahuila" -msgstr "" +msgstr "Coahuila" #: contrib/localflavor/mx/mx_states.py:19 msgid "Colima" -msgstr "" +msgstr "Colima" #: contrib/localflavor/mx/mx_states.py:20 msgid "Distrito Federal" -msgstr "" +msgstr "Distrito Feidearálach" #: contrib/localflavor/mx/mx_states.py:21 msgid "Durango" -msgstr "" +msgstr "Durango" #: contrib/localflavor/mx/mx_states.py:22 msgid "Guerrero" -msgstr "" +msgstr "Guerrero" #: contrib/localflavor/mx/mx_states.py:23 msgid "Guanajuato" -msgstr "" +msgstr "Guanajuato" #: contrib/localflavor/mx/mx_states.py:24 msgid "Hidalgo" -msgstr "" +msgstr "Hidalgo" #: contrib/localflavor/mx/mx_states.py:25 msgid "Jalisco" -msgstr "" +msgstr "Jalisco" #: contrib/localflavor/mx/mx_states.py:26 msgid "Estado de México" -msgstr "" +msgstr "Estado de México" #: contrib/localflavor/mx/mx_states.py:27 msgid "Michoacán" -msgstr "" +msgstr "Michoacán" #: contrib/localflavor/mx/mx_states.py:28 msgid "Morelos" -msgstr "" +msgstr "Morelos" #: contrib/localflavor/mx/mx_states.py:29 msgid "Nayarit" -msgstr "" +msgstr "Nayarit" #: contrib/localflavor/mx/mx_states.py:30 msgid "Nuevo León" -msgstr "" +msgstr "Nuevo León" #: contrib/localflavor/mx/mx_states.py:31 msgid "Oaxaca" -msgstr "" +msgstr "Oaxaca" #: contrib/localflavor/mx/mx_states.py:32 msgid "Puebla" -msgstr "" +msgstr "Puebla" #: contrib/localflavor/mx/mx_states.py:33 msgid "Querétaro" -msgstr "" +msgstr "Querétaro" #: contrib/localflavor/mx/mx_states.py:34 msgid "Quintana Roo" -msgstr "" +msgstr "Quintana Rubha" #: contrib/localflavor/mx/mx_states.py:35 msgid "Sinaloa" -msgstr "" +msgstr "Sinaloa" #: contrib/localflavor/mx/mx_states.py:36 msgid "San Luis Potosí" -msgstr "" +msgstr "San Luis Potosí" #: contrib/localflavor/mx/mx_states.py:37 msgid "Sonora" -msgstr "" +msgstr "Sonora" #: contrib/localflavor/mx/mx_states.py:38 msgid "Tabasco" -msgstr "" +msgstr "Tabasco" #: contrib/localflavor/mx/mx_states.py:39 msgid "Tamaulipas" -msgstr "" +msgstr "Tamaulipas" #: contrib/localflavor/mx/mx_states.py:40 msgid "Tlaxcala" -msgstr "" +msgstr "Tlaxcala" #: contrib/localflavor/mx/mx_states.py:41 msgid "Veracruz" -msgstr "" +msgstr "Veracruz" #: contrib/localflavor/mx/mx_states.py:42 msgid "Yucatán" -msgstr "" +msgstr "Yucatán" #: contrib/localflavor/mx/mx_states.py:43 msgid "Zacatecas" -msgstr "" - -#: contrib/localflavor/nl/forms.py:21 +msgstr "Zacatecas" + +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" -msgstr "" - -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "" - -#: contrib/localflavor/nl/forms.py:78 +msgstr "Iontráil cód poist bailí" + +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" -msgstr "" +msgstr "Iontráil uimhir SoFi bailí" #: contrib/localflavor/nl/nl_provinces.py:4 -msgid "Drente" -msgstr "" +msgid "Drenthe" +msgstr "Drenthe" #: contrib/localflavor/nl/nl_provinces.py:5 msgid "Flevoland" -msgstr "" +msgstr "Flevoland" #: contrib/localflavor/nl/nl_provinces.py:6 msgid "Friesland" -msgstr "" +msgstr "Friesland" #: contrib/localflavor/nl/nl_provinces.py:7 msgid "Gelderland" -msgstr "" +msgstr "Gelderland" #: contrib/localflavor/nl/nl_provinces.py:8 msgid "Groningen" -msgstr "" +msgstr "Groningen" #: contrib/localflavor/nl/nl_provinces.py:9 msgid "Limburg" -msgstr "" +msgstr "Limburg" #: contrib/localflavor/nl/nl_provinces.py:10 msgid "Noord-Brabant" -msgstr "" +msgstr "Noord-Brabant" #: contrib/localflavor/nl/nl_provinces.py:11 msgid "Noord-Holland" -msgstr "" +msgstr "Noord-Holland" #: contrib/localflavor/nl/nl_provinces.py:12 msgid "Overijssel" -msgstr "" +msgstr "Overijssel" #: contrib/localflavor/nl/nl_provinces.py:13 msgid "Utrecht" -msgstr "" +msgstr "Utrecht" #: contrib/localflavor/nl/nl_provinces.py:14 msgid "Zeeland" -msgstr "" +msgstr "Zeeland" #: contrib/localflavor/nl/nl_provinces.py:15 msgid "Zuid-Holland" -msgstr "" - -#: contrib/localflavor/no/forms.py:33 +msgstr "Zuid-Holland" + +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." -msgstr "" - -#: contrib/localflavor/pe/forms.py:24 +msgstr "Cuir isteach uimhir leasa na hIorua sóisialta bailí." + +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." -msgstr "" - -#: contrib/localflavor/pe/forms.py:52 +msgstr "Éilíonn an réimse 8 digití." + +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." -msgstr "" +msgstr "Éilíonn an réimse seo 11 digití." #: contrib/localflavor/pl/forms.py:38 msgid "National Identification Number consists of 11 digits." -msgstr "" +msgstr "Náisiúnta Uimhir Aitheantais comhdhéanta de 11 digití." #: contrib/localflavor/pl/forms.py:39 msgid "Wrong checksum for the National Identification Number." -msgstr "" +msgstr "Sheiceála mícheart ar an Uimhir Aitheantais Náisiúnta." #: contrib/localflavor/pl/forms.py:71 -msgid "" -"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "" +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Iontráil réimse uimhir chánach (NIP) i bhformáid XXX-XXX-XX XX-nó-XX XX-XXX-XXX." #: contrib/localflavor/pl/forms.py:72 msgid "Wrong checksum for the Tax Number (NIP)." -msgstr "" - -#: contrib/localflavor/pl/forms.py:111 -msgid "National Business Register Number (REGON) consists of 7 or 9 digits." -msgstr "" - -#: contrib/localflavor/pl/forms.py:112 +msgstr "Sheiceála mícheart ar an Uimhir Cánach (NIP)." + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "Uimhir Náisiúnta Clár Gnó (REGON) comhdhéanta de 9 nó 14 digití." + +#: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." -msgstr "" - -#: contrib/localflavor/pl/forms.py:155 +msgstr "Sheiceála Mícheart do Uimhir Ghnó Clár Náisiúnta (REGON)." + +#: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." -msgstr "" +msgstr "Iontráil cód poist i bhformáid XX-XXX." #: contrib/localflavor/pl/pl_voivodeships.py:8 msgid "Lower Silesia" -msgstr "" +msgstr "Silesia Íochtarach" #: contrib/localflavor/pl/pl_voivodeships.py:9 msgid "Kuyavia-Pomerania" -msgstr "" +msgstr "Kuyavia-Pomerania" #: contrib/localflavor/pl/pl_voivodeships.py:10 msgid "Lublin" -msgstr "" +msgstr "Lublin" #: contrib/localflavor/pl/pl_voivodeships.py:11 msgid "Lubusz" -msgstr "" +msgstr "Lubusz" #: contrib/localflavor/pl/pl_voivodeships.py:12 msgid "Lodz" -msgstr "" +msgstr "Lodz" #: contrib/localflavor/pl/pl_voivodeships.py:13 msgid "Lesser Poland" -msgstr "" +msgstr "An Pholainn lú " #: contrib/localflavor/pl/pl_voivodeships.py:14 msgid "Masovia" -msgstr "" +msgstr "Masovia" #: contrib/localflavor/pl/pl_voivodeships.py:15 msgid "Opole" -msgstr "" +msgstr "Opole" #: contrib/localflavor/pl/pl_voivodeships.py:16 msgid "Subcarpatia" -msgstr "" +msgstr "Subcarpatia" #: contrib/localflavor/pl/pl_voivodeships.py:17 msgid "Podlasie" -msgstr "" +msgstr "Podlasie" #: contrib/localflavor/pl/pl_voivodeships.py:18 msgid "Pomerania" -msgstr "" +msgstr "Pomerania" #: contrib/localflavor/pl/pl_voivodeships.py:19 msgid "Silesia" -msgstr "" +msgstr "Silesia" #: contrib/localflavor/pl/pl_voivodeships.py:20 msgid "Swietokrzyskie" -msgstr "" +msgstr "Swietokrzyskie" #: contrib/localflavor/pl/pl_voivodeships.py:21 msgid "Warmia-Masuria" -msgstr "" +msgstr "Warmia-Masuria" #: contrib/localflavor/pl/pl_voivodeships.py:22 msgid "Greater Poland" -msgstr "" +msgstr "An Pholainn Mór" #: contrib/localflavor/pl/pl_voivodeships.py:23 msgid "West Pomerania" -msgstr "" +msgstr "Pomerania Thiar" + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Iontráil zip-cód i bhformáid XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Ní mór líon Fón tá 9 dhigit, nó tús le + nó 00." #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." -msgstr "" +msgstr "Iontráil CIF bailí." #: contrib/localflavor/ro/forms.py:56 msgid "Enter a valid CNP." -msgstr "" +msgstr "Iontráil CNP bailí." #: contrib/localflavor/ro/forms.py:141 msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" -msgstr "" +msgstr "Iontráil IBAN bailí i bhformáid ROXX-XXXX-XXXX-XXXX-XXXX-XXXX" #: contrib/localflavor/ro/forms.py:171 msgid "Phone numbers must be in XXXX-XXXXXX format." -msgstr "" +msgstr "Ní mór uimhreacha teileafóin a chur i bhformáid XXXX-XXXXXX." #: contrib/localflavor/ro/forms.py:194 msgid "Enter a valid postal code in the format XXXXXX" -msgstr "" - -#: contrib/localflavor/sk/forms.py:30 -msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "" +msgstr "Iontráil cód poist bailí i bhformáid XXXXXX" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Cuir isteach uimhir eagraíochta bailí Sualainnis." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Iontráil uimhir aitheantais bailí Sualainnis pearsanta." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Ní líon Comhordaithe Co-cheadaítear." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Iontráil cód poist na Sualainne i bhformáid XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stócólm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" -msgstr "" +msgstr "Banska Bystrica" #: contrib/localflavor/sk/sk_districts.py:9 msgid "Banska Stiavnica" -msgstr "" +msgstr "Banska Stiavnica" #: contrib/localflavor/sk/sk_districts.py:10 msgid "Bardejov" -msgstr "" +msgstr "Bardejov" #: contrib/localflavor/sk/sk_districts.py:11 msgid "Banovce nad Bebravou" -msgstr "" +msgstr "Banovce nad Bebravou" #: contrib/localflavor/sk/sk_districts.py:12 msgid "Brezno" -msgstr "" +msgstr "Brezno" #: contrib/localflavor/sk/sk_districts.py:13 msgid "Bratislava I" -msgstr "" +msgstr "An Bhratasláiv I" #: contrib/localflavor/sk/sk_districts.py:14 msgid "Bratislava II" -msgstr "" +msgstr "An Bhratasláiv II" #: contrib/localflavor/sk/sk_districts.py:15 msgid "Bratislava III" -msgstr "" +msgstr "An Bhratasláiv III" #: contrib/localflavor/sk/sk_districts.py:16 msgid "Bratislava IV" -msgstr "" +msgstr "An Bhratasláiv IV" #: contrib/localflavor/sk/sk_districts.py:17 msgid "Bratislava V" -msgstr "" +msgstr "An Bhratasláiv V" #: contrib/localflavor/sk/sk_districts.py:18 msgid "Bytca" -msgstr "" +msgstr "Bytca" #: contrib/localflavor/sk/sk_districts.py:19 msgid "Cadca" -msgstr "" +msgstr "Cadca" #: contrib/localflavor/sk/sk_districts.py:20 msgid "Detva" -msgstr "" +msgstr "Detva" #: contrib/localflavor/sk/sk_districts.py:21 msgid "Dolny Kubin" -msgstr "" +msgstr "Dolny Kubin" #: contrib/localflavor/sk/sk_districts.py:22 msgid "Dunajska Streda" -msgstr "" +msgstr "Dunajska Streda" #: contrib/localflavor/sk/sk_districts.py:23 msgid "Galanta" -msgstr "" +msgstr "Galanta" #: contrib/localflavor/sk/sk_districts.py:24 msgid "Gelnica" -msgstr "" +msgstr "Gelnica" #: contrib/localflavor/sk/sk_districts.py:25 msgid "Hlohovec" -msgstr "" +msgstr "Hlohovec" #: contrib/localflavor/sk/sk_districts.py:26 msgid "Humenne" -msgstr "" +msgstr "Humenne" #: contrib/localflavor/sk/sk_districts.py:27 msgid "Ilava" -msgstr "" +msgstr "Ilava" #: contrib/localflavor/sk/sk_districts.py:28 msgid "Kezmarok" -msgstr "" +msgstr "Kezmarok" #: contrib/localflavor/sk/sk_districts.py:29 msgid "Komarno" -msgstr "" +msgstr "Komarno" #: contrib/localflavor/sk/sk_districts.py:30 msgid "Kosice I" -msgstr "" +msgstr "Kosice I" #: contrib/localflavor/sk/sk_districts.py:31 msgid "Kosice II" -msgstr "" +msgstr "Kosice II" #: contrib/localflavor/sk/sk_districts.py:32 msgid "Kosice III" -msgstr "" +msgstr "Kosice III" #: contrib/localflavor/sk/sk_districts.py:33 msgid "Kosice IV" -msgstr "" +msgstr "Kosice IV" #: contrib/localflavor/sk/sk_districts.py:34 msgid "Kosice - okolie" -msgstr "" +msgstr "Kosice - okolie" #: contrib/localflavor/sk/sk_districts.py:35 msgid "Krupina" -msgstr "" +msgstr "Krupina" #: contrib/localflavor/sk/sk_districts.py:36 msgid "Kysucke Nove Mesto" -msgstr "" +msgstr "Kysucke Nove mesto" #: contrib/localflavor/sk/sk_districts.py:37 msgid "Levice" -msgstr "" +msgstr "Levice" #: contrib/localflavor/sk/sk_districts.py:38 msgid "Levoca" -msgstr "" +msgstr "Levoca" #: contrib/localflavor/sk/sk_districts.py:39 msgid "Liptovsky Mikulas" -msgstr "" +msgstr "Liptovsky Mikulas" #: contrib/localflavor/sk/sk_districts.py:40 msgid "Lucenec" -msgstr "" +msgstr "Lucenec" #: contrib/localflavor/sk/sk_districts.py:41 msgid "Malacky" -msgstr "" +msgstr "Malacky" #: contrib/localflavor/sk/sk_districts.py:42 msgid "Martin" -msgstr "" +msgstr "Martin" #: contrib/localflavor/sk/sk_districts.py:43 msgid "Medzilaborce" -msgstr "" +msgstr "Medzilaborce" #: contrib/localflavor/sk/sk_districts.py:44 msgid "Michalovce" -msgstr "" +msgstr "Michalovce" #: contrib/localflavor/sk/sk_districts.py:45 msgid "Myjava" -msgstr "" +msgstr "Myjava" #: contrib/localflavor/sk/sk_districts.py:46 msgid "Namestovo" -msgstr "" +msgstr "Namestovo" #: contrib/localflavor/sk/sk_districts.py:47 msgid "Nitra" -msgstr "" +msgstr "Nitra" #: contrib/localflavor/sk/sk_districts.py:48 msgid "Nove Mesto nad Vahom" -msgstr "" +msgstr "Nove mesto nad Vahom" #: contrib/localflavor/sk/sk_districts.py:49 msgid "Nove Zamky" -msgstr "" +msgstr "Nove Zamky" #: contrib/localflavor/sk/sk_districts.py:50 msgid "Partizanske" -msgstr "" +msgstr "Partizanske" #: contrib/localflavor/sk/sk_districts.py:51 msgid "Pezinok" -msgstr "" +msgstr "Pezinok" #: contrib/localflavor/sk/sk_districts.py:52 msgid "Piestany" -msgstr "" +msgstr "Piestany" #: contrib/localflavor/sk/sk_districts.py:53 msgid "Poltar" -msgstr "" +msgstr "Poltar" #: contrib/localflavor/sk/sk_districts.py:54 msgid "Poprad" -msgstr "" +msgstr "Poprad" #: contrib/localflavor/sk/sk_districts.py:55 msgid "Povazska Bystrica" -msgstr "" +msgstr "Povazska Bystrica" #: contrib/localflavor/sk/sk_districts.py:56 msgid "Presov" -msgstr "" +msgstr "Presov" #: contrib/localflavor/sk/sk_districts.py:57 msgid "Prievidza" -msgstr "" +msgstr "Prievidza" #: contrib/localflavor/sk/sk_districts.py:58 msgid "Puchov" -msgstr "" +msgstr "Puchov" #: contrib/localflavor/sk/sk_districts.py:59 msgid "Revuca" -msgstr "" +msgstr "Revuca" #: contrib/localflavor/sk/sk_districts.py:60 msgid "Rimavska Sobota" -msgstr "" +msgstr "Rimavska Sobota" #: contrib/localflavor/sk/sk_districts.py:61 msgid "Roznava" -msgstr "" +msgstr "Roznava" #: contrib/localflavor/sk/sk_districts.py:62 msgid "Ruzomberok" -msgstr "" +msgstr "Ruzomberok" #: contrib/localflavor/sk/sk_districts.py:63 msgid "Sabinov" -msgstr "" +msgstr "Sabinov" #: contrib/localflavor/sk/sk_districts.py:64 msgid "Senec" -msgstr "" +msgstr "Senec" #: contrib/localflavor/sk/sk_districts.py:65 msgid "Senica" -msgstr "" +msgstr "Senica" #: contrib/localflavor/sk/sk_districts.py:66 msgid "Skalica" -msgstr "" +msgstr "Skalica" #: contrib/localflavor/sk/sk_districts.py:67 msgid "Snina" -msgstr "" +msgstr "Snina" #: contrib/localflavor/sk/sk_districts.py:68 msgid "Sobrance" -msgstr "" +msgstr "Sobrance" #: contrib/localflavor/sk/sk_districts.py:69 msgid "Spisska Nova Ves" -msgstr "" +msgstr "Spisska Nova Ves" #: contrib/localflavor/sk/sk_districts.py:70 msgid "Stara Lubovna" -msgstr "" +msgstr "Stara Lubovna" #: contrib/localflavor/sk/sk_districts.py:71 msgid "Stropkov" -msgstr "" +msgstr "Stropkov" #: contrib/localflavor/sk/sk_districts.py:72 msgid "Svidnik" -msgstr "" +msgstr "Svidnik" #: contrib/localflavor/sk/sk_districts.py:73 msgid "Sala" -msgstr "" +msgstr "Sala" #: contrib/localflavor/sk/sk_districts.py:74 msgid "Topolcany" -msgstr "" +msgstr "Topolcany" #: contrib/localflavor/sk/sk_districts.py:75 msgid "Trebisov" -msgstr "" +msgstr "Trebisov" #: contrib/localflavor/sk/sk_districts.py:76 msgid "Trencin" -msgstr "" +msgstr "Trencin" #: contrib/localflavor/sk/sk_districts.py:77 msgid "Trnava" -msgstr "" +msgstr "Trnava" #: contrib/localflavor/sk/sk_districts.py:78 msgid "Turcianske Teplice" -msgstr "" +msgstr "Turcianske Teplice" #: contrib/localflavor/sk/sk_districts.py:79 msgid "Tvrdosin" -msgstr "" +msgstr "Tvrdosin" #: contrib/localflavor/sk/sk_districts.py:80 msgid "Velky Krtis" -msgstr "" +msgstr "Velky Krtis" #: contrib/localflavor/sk/sk_districts.py:81 msgid "Vranov nad Toplou" -msgstr "" +msgstr "Vranov nad Toplou" #: contrib/localflavor/sk/sk_districts.py:82 msgid "Zlate Moravce" -msgstr "" +msgstr "Zlate Moravce" #: contrib/localflavor/sk/sk_districts.py:83 msgid "Zvolen" -msgstr "" +msgstr "Zvolen" #: contrib/localflavor/sk/sk_districts.py:84 msgid "Zarnovica" -msgstr "" +msgstr "Zarnovica" #: contrib/localflavor/sk/sk_districts.py:85 msgid "Ziar nad Hronom" -msgstr "" +msgstr "Ziar nad Hronom" #: contrib/localflavor/sk/sk_districts.py:86 msgid "Zilina" -msgstr "" +msgstr "Zilina" #: contrib/localflavor/sk/sk_regions.py:8 msgid "Banska Bystrica region" -msgstr "" +msgstr "Banska Bystrica réigiún" #: contrib/localflavor/sk/sk_regions.py:9 msgid "Bratislava region" -msgstr "" +msgstr "An Bhratasláiv réigiún" #: contrib/localflavor/sk/sk_regions.py:10 msgid "Kosice region" -msgstr "" +msgstr "Kosice réigiún" #: contrib/localflavor/sk/sk_regions.py:11 msgid "Nitra region" -msgstr "" +msgstr "Nitra réigiún" #: contrib/localflavor/sk/sk_regions.py:12 msgid "Presov region" -msgstr "" +msgstr "Presov réigiún" #: contrib/localflavor/sk/sk_regions.py:13 msgid "Trencin region" -msgstr "" +msgstr "Trencin réigiún" #: contrib/localflavor/sk/sk_regions.py:14 msgid "Trnava region" -msgstr "" +msgstr "Trnava réigiún" #: contrib/localflavor/sk/sk_regions.py:15 msgid "Zilina region" -msgstr "" +msgstr "Zilina réigiún" #: contrib/localflavor/uk/forms.py:21 msgid "Enter a valid postcode." -msgstr "" +msgstr "Iontráil postchód bailí." #: contrib/localflavor/uk/uk_regions.py:11 msgid "Bedfordshire" -msgstr "" +msgstr "Bedfordshire" #: contrib/localflavor/uk/uk_regions.py:12 msgid "Buckinghamshire" -msgstr "" +msgstr "Buckinghamshire" #: contrib/localflavor/uk/uk_regions.py:14 msgid "Cheshire" -msgstr "" +msgstr "Cheshire" #: contrib/localflavor/uk/uk_regions.py:15 msgid "Cornwall and Isles of Scilly" -msgstr "" +msgstr "Corn na Breataine agus na Oileáin Scilly" #: contrib/localflavor/uk/uk_regions.py:16 msgid "Cumbria" -msgstr "" +msgstr "Cumbria" #: contrib/localflavor/uk/uk_regions.py:17 msgid "Derbyshire" -msgstr "" +msgstr "Derbyshire" #: contrib/localflavor/uk/uk_regions.py:18 msgid "Devon" -msgstr "" +msgstr "Devon" #: contrib/localflavor/uk/uk_regions.py:19 msgid "Dorset" -msgstr "" +msgstr "Dorset" #: contrib/localflavor/uk/uk_regions.py:20 msgid "Durham" -msgstr "" +msgstr "Durham" #: contrib/localflavor/uk/uk_regions.py:21 msgid "East Sussex" -msgstr "" +msgstr "East Sussex" #: contrib/localflavor/uk/uk_regions.py:22 msgid "Essex" -msgstr "" +msgstr "Essex" #: contrib/localflavor/uk/uk_regions.py:23 msgid "Gloucestershire" -msgstr "" +msgstr "Gloucestershire" #: contrib/localflavor/uk/uk_regions.py:24 msgid "Greater London" -msgstr "" +msgstr "Greater London" #: contrib/localflavor/uk/uk_regions.py:25 msgid "Greater Manchester" -msgstr "" +msgstr "Greater Manchester" #: contrib/localflavor/uk/uk_regions.py:26 msgid "Hampshire" -msgstr "" +msgstr "Hampshire" #: contrib/localflavor/uk/uk_regions.py:27 msgid "Hertfordshire" -msgstr "" +msgstr "Hertfordshire" #: contrib/localflavor/uk/uk_regions.py:28 msgid "Kent" -msgstr "" +msgstr "Kent" #: contrib/localflavor/uk/uk_regions.py:29 msgid "Lancashire" -msgstr "" +msgstr "Lancashire" #: contrib/localflavor/uk/uk_regions.py:30 msgid "Leicestershire" -msgstr "" +msgstr "Leicestershire" #: contrib/localflavor/uk/uk_regions.py:31 msgid "Lincolnshire" -msgstr "" +msgstr "Lincolnshire" #: contrib/localflavor/uk/uk_regions.py:32 msgid "Merseyside" -msgstr "" +msgstr "Merseyside" #: contrib/localflavor/uk/uk_regions.py:33 msgid "Norfolk" -msgstr "" +msgstr "Norfolk" #: contrib/localflavor/uk/uk_regions.py:34 msgid "North Yorkshire" -msgstr "" +msgstr "North Yorkshire" #: contrib/localflavor/uk/uk_regions.py:35 msgid "Northamptonshire" -msgstr "" +msgstr "Northamptonshire" #: contrib/localflavor/uk/uk_regions.py:36 msgid "Northumberland" -msgstr "" +msgstr "Northumberland" #: contrib/localflavor/uk/uk_regions.py:37 msgid "Nottinghamshire" -msgstr "" +msgstr "Nottinghamshire" #: contrib/localflavor/uk/uk_regions.py:38 msgid "Oxfordshire" -msgstr "" +msgstr "Oxfordshire" #: contrib/localflavor/uk/uk_regions.py:39 msgid "Shropshire" -msgstr "" +msgstr "Shropshire" #: contrib/localflavor/uk/uk_regions.py:40 msgid "Somerset" -msgstr "" +msgstr "Somerset" #: contrib/localflavor/uk/uk_regions.py:41 msgid "South Yorkshire" -msgstr "" +msgstr "South Yorkshire" #: contrib/localflavor/uk/uk_regions.py:42 msgid "Staffordshire" -msgstr "" +msgstr "Staffordshire" #: contrib/localflavor/uk/uk_regions.py:43 msgid "Suffolk" -msgstr "" +msgstr "Suffolk" #: contrib/localflavor/uk/uk_regions.py:44 msgid "Surrey" -msgstr "" +msgstr "Surrey" #: contrib/localflavor/uk/uk_regions.py:45 msgid "Tyne and Wear" -msgstr "" +msgstr "Tyne and Wear" #: contrib/localflavor/uk/uk_regions.py:46 msgid "Warwickshire" -msgstr "" +msgstr "Warwickshire" #: contrib/localflavor/uk/uk_regions.py:47 msgid "West Midlands" -msgstr "" +msgstr "West Midlands" #: contrib/localflavor/uk/uk_regions.py:48 msgid "West Sussex" -msgstr "" +msgstr "West Sussex" #: contrib/localflavor/uk/uk_regions.py:49 msgid "West Yorkshire" -msgstr "" +msgstr "West Yorkshire" #: contrib/localflavor/uk/uk_regions.py:50 msgid "Wiltshire" -msgstr "" +msgstr "Wiltshire" #: contrib/localflavor/uk/uk_regions.py:51 msgid "Worcestershire" -msgstr "" +msgstr "Worcestershire" #: contrib/localflavor/uk/uk_regions.py:55 msgid "County Antrim" -msgstr "" +msgstr "Contae Aontroma" #: contrib/localflavor/uk/uk_regions.py:56 msgid "County Armagh" -msgstr "" +msgstr "Contae Ard Mhacha" #: contrib/localflavor/uk/uk_regions.py:57 msgid "County Down" -msgstr "" +msgstr "Contae an Dúin" #: contrib/localflavor/uk/uk_regions.py:58 msgid "County Fermanagh" -msgstr "" +msgstr "Contae Fhear Manach" #: contrib/localflavor/uk/uk_regions.py:59 msgid "County Londonderry" -msgstr "" +msgstr "Contae Dhoire" #: contrib/localflavor/uk/uk_regions.py:60 msgid "County Tyrone" -msgstr "" +msgstr "Contae Thír Eoghain" #: contrib/localflavor/uk/uk_regions.py:64 msgid "Clwyd" -msgstr "" +msgstr "Clwyd" #: contrib/localflavor/uk/uk_regions.py:65 msgid "Dyfed" -msgstr "" +msgstr "Dyfed" #: contrib/localflavor/uk/uk_regions.py:66 msgid "Gwent" -msgstr "" +msgstr "Gwent" #: contrib/localflavor/uk/uk_regions.py:67 msgid "Gwynedd" -msgstr "" +msgstr "Gwynedd" #: contrib/localflavor/uk/uk_regions.py:68 msgid "Mid Glamorgan" -msgstr "" +msgstr "Mid Glamorgan" #: contrib/localflavor/uk/uk_regions.py:69 msgid "Powys" -msgstr "" +msgstr "Powys" #: contrib/localflavor/uk/uk_regions.py:70 msgid "South Glamorgan" -msgstr "" +msgstr "South Glamorgan" #: contrib/localflavor/uk/uk_regions.py:71 msgid "West Glamorgan" -msgstr "" +msgstr "West Glamorgan" #: contrib/localflavor/uk/uk_regions.py:75 msgid "Borders" -msgstr "" +msgstr "Borders" #: contrib/localflavor/uk/uk_regions.py:76 msgid "Central Scotland" -msgstr "" +msgstr "Central Albain" #: contrib/localflavor/uk/uk_regions.py:77 msgid "Dumfries and Galloway" -msgstr "" +msgstr "Dumfries agus Galloway" #: contrib/localflavor/uk/uk_regions.py:78 msgid "Fife" -msgstr "" +msgstr "Fife" #: contrib/localflavor/uk/uk_regions.py:79 msgid "Grampian" -msgstr "" +msgstr "Grampian" #: contrib/localflavor/uk/uk_regions.py:80 msgid "Highland" -msgstr "" +msgstr "Highland" #: contrib/localflavor/uk/uk_regions.py:81 msgid "Lothian" -msgstr "" +msgstr "Lothian" #: contrib/localflavor/uk/uk_regions.py:82 msgid "Orkney Islands" -msgstr "" +msgstr "na hOiléain Orkney" #: contrib/localflavor/uk/uk_regions.py:83 msgid "Shetland Islands" -msgstr "" +msgstr "na hOiléain Shetland" #: contrib/localflavor/uk/uk_regions.py:84 msgid "Strathclyde" -msgstr "" +msgstr "Strathclyde" #: contrib/localflavor/uk/uk_regions.py:85 msgid "Tayside" -msgstr "" +msgstr "Tayside" #: contrib/localflavor/uk/uk_regions.py:86 msgid "Western Isles" -msgstr "" +msgstr "Oileáin Iarthair" #: contrib/localflavor/uk/uk_regions.py:90 msgid "England" @@ -3557,25 +4172,49 @@ msgid "Wales" msgstr "An Bhreatain Bheag" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "" - -#: contrib/localflavor/us/forms.py:54 +msgstr "Iontráil zip-cód i bhformáid XXXXX nó XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Ní mór uimhreacha teileafóin a chur i format XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "" - -#: contrib/localflavor/za/forms.py:20 +msgstr "Iontráil uimhir Slándáil Shóisialta US bailí i bhformáid XXX-XX-XXXX." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Iontráil US stát nó i gcríoch." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "U.S. stát (dhá litreacha móra)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Uimhir telefón" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Iontráil CI bailí a roinnt i X.XXX.XXX-X, XXXXXXX-X nó XXXXXXXX formáid." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Cuir isteach uimhir IC bailí." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" -msgstr "" - -#: contrib/localflavor/za/forms.py:54 +msgstr "Iontráil uimhir ID hAfraice Theas bailí" + +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" -msgstr "" +msgstr "Iontráil cód poist na hAfraice Theas bailí" #: contrib/localflavor/za/za_provinces.py:4 msgid "Eastern Cape" -msgstr "" +msgstr "Eastern Cape" #: contrib/localflavor/za/za_provinces.py:5 msgid "Free State" @@ -3583,23 +4222,23 @@ #: contrib/localflavor/za/za_provinces.py:6 msgid "Gauteng" -msgstr "" +msgstr "Gauteng" #: contrib/localflavor/za/za_provinces.py:7 msgid "KwaZulu-Natal" -msgstr "" +msgstr "KwaZulu-Natal" #: contrib/localflavor/za/za_provinces.py:8 msgid "Limpopo" -msgstr "" +msgstr "Limpopo" #: contrib/localflavor/za/za_provinces.py:9 msgid "Mpumalanga" -msgstr "" +msgstr "Mpumalanga" #: contrib/localflavor/za/za_provinces.py:10 msgid "Northern Cape" -msgstr "" +msgstr "Northern Cape" #: contrib/localflavor/za/za_provinces.py:11 msgid "North West" @@ -3607,27 +4246,26 @@ #: contrib/localflavor/za/za_provinces.py:12 msgid "Western Cape" -msgstr "" +msgstr "Western Cape" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "teachtaireacht leisciúil" #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "atreoraigh ó" #: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Teastaíonn dearbhchosán gan ainm fearainn. Sampla '/events/search/'." +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "Teastaíonn dearbhchosán gan ainm fearainn. Sampla '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "atreoraigh go dtí" #: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." msgstr "Is féidir dearbhchosán nó URL lán ag tosnú le 'http://'." #: contrib/redirects/models.py:13 @@ -3670,504 +4308,395 @@ msgid "sites" msgstr "suíomhanna" -#: core/validators.py:80 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Níl ach litreacha, uimhreacha, fílínta agus daiseanna ceadaithe." - -#: core/validators.py:84 -msgid "Uppercase letters are not allowed here." -msgstr "Níl cás uachtair ceadaithe anseo." - -#: core/validators.py:88 -msgid "Lowercase letters are not allowed here." -msgstr "Nil cás íochtair ceadaithe anseo." - -#: core/validators.py:95 -msgid "Enter only digits separated by commas." -msgstr "Cuir isteach digite amháin anseo scartha le camóg." - -#: core/validators.py:107 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Cuir isteach r-phostanna bailí scartha le camóige." - -#: core/validators.py:111 -msgid "Please enter a valid IP address." -msgstr "Le do thoil cuir isteach seoladh IP bailí." - -#: core/validators.py:115 -msgid "Empty values are not allowed here." -msgstr "Níl méideanna folmh ceadaithe anseo." - -#: core/validators.py:119 -msgid "Non-numeric characters aren't allowed here." -msgstr "Níl ach uimhreacha ceadaithe anseo." +#: core/validators.py:20 +#: forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Cuir luach bailí isteach." + +#: core/validators.py:87 +#: forms/fields.py:517 +msgid "Enter a valid URL." +msgstr "Cuir URL bailí isteach." + +#: core/validators.py:89 +#: forms/fields.py:518 +msgid "This URL appears to be a broken link." +msgstr "Dealraíonn sé gur nasc briste é an URL seo." #: core/validators.py:123 -msgid "This value can't be comprised solely of digits." -msgstr "Cathaigh níos mó ná digite amháin sa méid seo." - -#: core/validators.py:128 forms/fields.py:161 -msgid "Enter a whole number." -msgstr "Cuir isteach uimhir lán." - -#: core/validators.py:132 -msgid "Only alphabetical characters are allowed here." -msgstr "" - -#: core/validators.py:147 +#: forms/fields.py:861 +msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Cuir 'slug' bailí isteach atá déanta as litreacha, uimhreacha, fostríoca nó fleiscíní." + +#: core/validators.py:126 +#: forms/fields.py:854 +msgid "Enter a valid IPv4 address." +msgstr "Cuir seoladh bailí IPv4 isteach." + +#: core/validators.py:129 +#: db/models/fields/__init__.py:596 +msgid "Enter only digits separated by commas." +msgstr "Ná cuir isteach ach digití scartha ag camóga." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Bí cinnte nach bhfuil níos lú ná %(limit_value)s (it is %(show_value)s)." + +#: core/validators.py:153 +#: forms/fields.py:196 +#: forms/fields.py:246 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Bí cinnte go bhfuil an luach seo cothrom le nó níos lú ná %(limit_value)s." + +#: core/validators.py:158 +#: forms/fields.py:197 +#: forms/fields.py:247 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Bí cinnte go bhfuil an luach seo cothrom le nó níos mó ná %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "Ensure this value has at least %(limit_value)d characters (it has %(show_value)d)." +msgstr "Bí cinnte nach bhfuil níos lú ná %(limit_value)d carachtar sa luach seo (it has %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "Ensure this value has at most %(limit_value)d characters (it has %(show_value)d)." +msgstr "Bí cinnte nach bhfuil níos mó ná %(limit_value)d carachtar sa luach seo %(show_value)d)." + +#: db/models/base.py:780 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "Ní mór a bheith %(field_name)s uathúil don %(date_field)s %(lookup)s." + +#: db/models/base.py:795 +#: db/models/base.py:803 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Tá %(model_name)s leis an %(field_label)s seo ann cheana." + +#: db/models/fields/__init__.py:62 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Níl %r luach rogha bailí." + +#: db/models/fields/__init__.py:63 +msgid "This field cannot be null." +msgstr "Ní cheadaítear luach nialasach sa réimse seo." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be blank." +msgstr "Ní cheadaítear luach nialasach sa réimse seo." + +#: db/models/fields/__init__.py:69 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Réimse de Cineál: %(field_type)s" + +#: db/models/fields/__init__.py:475 +#: db/models/fields/__init__.py:876 +#: db/models/fields/__init__.py:978 +#: db/models/fields/__init__.py:989 +#: db/models/fields/__init__.py:1016 +msgid "Integer" +msgstr "Slánuimhir" + +#: db/models/fields/__init__.py:479 +msgid "This value must be an integer." +msgstr "Ní mór don luach seo a bheith ina shlánuimhir." + +#: db/models/fields/__init__.py:514 +msgid "This value must be either True or False." +msgstr "Ní mór don luach seo a bheith Fíor nó Bréagach." + +#: db/models/fields/__init__.py:516 +msgid "Boolean (Either True or False)" +msgstr "Boole" + +#: db/models/fields/__init__.py:563 +#: db/models/fields/__init__.py:999 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Teaghrán (suas go %(max_length)s)" + +#: db/models/fields/__init__.py:591 +msgid "Comma-separated integers" +msgstr "Slánuimhireacha camóg-scartha" + +#: db/models/fields/__init__.py:605 +msgid "Date (without time)" +msgstr "Dáta (gan am)" + +#: db/models/fields/__init__.py:609 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Cuir dáta bailí isteach, san fhormáid BBBB-MM-LL." + +#: db/models/fields/__init__.py:610 #, python-format msgid "Invalid date: %s" -msgstr "" - -#: core/validators.py:152 db/models/fields/__init__.py:569 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "" - -#: core/validators.py:157 -msgid "Enter a valid time in HH:MM format." -msgstr "" - -#: core/validators.py:161 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "" - -#: core/validators.py:166 forms/fields.py:412 -msgid "Enter a valid e-mail address." -msgstr "" - -#: core/validators.py:178 core/validators.py:470 forms/fields.py:430 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "" - -#: core/validators.py:189 forms/fields.py:461 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" - -#: core/validators.py:196 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "" - -#: core/validators.py:200 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" - -#: core/validators.py:208 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "" - -#: core/validators.py:212 -msgid "A valid URL is required." -msgstr "" - -#: core/validators.py:226 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" - -#: core/validators.py:233 -#, python-format -msgid "Badly formed XML: %s" -msgstr "" - -#: core/validators.py:250 -#, python-format -msgid "Invalid URL: %s" -msgstr "" - -#: core/validators.py:255 core/validators.py:257 -#, python-format -msgid "The URL %s is a broken link." -msgstr "" - -#: core/validators.py:263 -msgid "Enter a valid U.S. state abbreviation." -msgstr "" - -#: core/validators.py:277 -#, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgstr "" - -#: core/validators.py:284 -#, python-format -msgid "This field must match the '%s' field." -msgstr "" - -#: core/validators.py:303 -msgid "Please enter something for at least one field." -msgstr "" - -#: core/validators.py:312 core/validators.py:323 -msgid "Please enter both fields or leave them both empty." -msgstr "" - -#: core/validators.py:331 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "" - -#: core/validators.py:344 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "" - -#: core/validators.py:363 -msgid "Duplicate values are not allowed." -msgstr "" - -#: core/validators.py:378 -#, python-format -msgid "This value must be between %(lower)s and %(upper)s." -msgstr "" - -#: core/validators.py:380 -#, python-format -msgid "This value must be at least %s." -msgstr "" - -#: core/validators.py:382 -#, python-format -msgid "This value must be no more than %s." -msgstr "" - -#: core/validators.py:423 -#, python-format -msgid "This value must be a power of %s." -msgstr "" - -#: core/validators.py:433 -msgid "Please enter a valid decimal number." -msgstr "" - -#: core/validators.py:440 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -"Please enter a valid decimal number with at most %s total digits." -msgstr "" - -#: core/validators.py:443 +msgstr "Dáta neamhbhailí: %s" + +#: db/models/fields/__init__.py:691 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "Cuir dáta/am bailí isteach, san fhormáid BBBB-MM-LL UU:NN[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:693 +msgid "Date (with time)" +msgstr "Dáta (le am)" + +#: db/models/fields/__init__.py:759 +msgid "This value must be a decimal number." +msgstr "Ní mór don luach seo a bheith ina uimhir dheachúlach." + +#: db/models/fields/__init__.py:761 +msgid "Decimal number" +msgstr "Uimhir deachúlach" + +#: db/models/fields/__init__.py:816 +msgid "E-mail address" +msgstr "R-phost" + +#: db/models/fields/__init__.py:823 +#: db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Conair comhaid" + +#: db/models/fields/__init__.py:846 +#: db/models/fields/__init__.py:874 +msgid "This value must be a float." +msgstr "Ní mór go mbeadh an luach snámhpointe." + +#: db/models/fields/__init__.py:848 +msgid "Floating point number" +msgstr "Snámhphointe" + +#: db/models/fields/__init__.py:901 +msgid "Big (8 byte) integer" +msgstr "Mór (8 byte) slánuimhi" + +#: db/models/fields/__init__.py:930 +msgid "This value must be either None, True or False." +msgstr "Ní mór don luach seo a bheith Faic, Fíor nó Bréagach." + +#: db/models/fields/__init__.py:932 +msgid "Boolean (Either True, False or None)" +msgstr "Boole (Fíor, Bréagach nó Dada)" + +#: db/models/fields/__init__.py:1022 +msgid "Text" +msgstr "téacs" + +#: db/models/fields/__init__.py:1038 +msgid "Time" +msgstr "am" + +#: db/models/fields/__init__.py:1042 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Cuir am bailí isteach san fhormáid UU:NN[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:1126 +msgid "XML text" +msgstr "Téacs XML" + +#: db/models/fields/related.py:755 #, python-format -msgid "" -"Please enter a valid decimal number with a whole part of at most %s digit." -"Please enter a valid decimal number with a whole part of at most %s digits." -msgstr "" - -#: core/validators.py:446 -#, python-format -msgid "Please enter a valid decimal number with at most %s decimal place." -"Please enter a valid decimal number with at most %s decimal places." -msgstr "" - -#: core/validators.py:454 -msgid "Please enter a valid floating point number." -msgstr "" - -#: core/validators.py:463 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" - -#: core/validators.py:464 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" - -#: core/validators.py:481 -msgid "The format for this field is wrong." -msgstr "" - -#: core/validators.py:496 -msgid "This field is invalid." -msgstr "" - -#: core/validators.py:532 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "" - -#: core/validators.py:535 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" - -#: core/validators.py:568 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" - -#: core/validators.py:572 -#, 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:577 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:582 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:586 -#, 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:591 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" - -#: db/models/manipulators.py:304 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" - -#: db/models/fields/__init__.py:46 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "" - -#: db/models/fields/__init__.py:170 db/models/fields/__init__.py:343 -#: db/models/fields/files.py:168 db/models/fields/files.py:179 -#: forms/fields.py:52 oldforms/__init__.py:370 -msgid "This field is required." -msgstr "" - -#: db/models/fields/__init__.py:457 -msgid "This value must be an integer." -msgstr "" - -#: db/models/fields/__init__.py:503 -msgid "This value must be either True or False." -msgstr "" - -#: db/models/fields/__init__.py:532 -msgid "This field cannot be null." -msgstr "" - -#: db/models/fields/__init__.py:634 db/models/fields/__init__.py:651 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." -msgstr "" - -#: db/models/fields/__init__.py:707 -msgid "This value must be a decimal number." -msgstr "" - -#: db/models/fields/__init__.py:854 -msgid "This value must be either None, True or False." -msgstr "" - -#: db/models/fields/__init__.py:969 db/models/fields/__init__.py:982 -msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." -msgstr "" - -#: db/models/fields/files.py:188 -msgid "Enter a valid filename." -msgstr "" - -#: db/models/fields/related.py:92 -#, python-format -msgid "Please enter a valid %s." -msgstr "" - -#: db/models/fields/related.py:759 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" - -#: db/models/fields/related.py:839 +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Níl %(model)s le eochair %(pk)r ann." + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "Eochair Eachtracha (cineál a chinnfear de réir réimse a bhaineann)" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "Duine-le-duine caidreamh" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "Go leor le go leor caidreamh" + +#: db/models/fields/related.py:959 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Ar ríomhaire Mac, coinnigh an eochair \"Control\" nó \"Command\" síos chun níos mó ná rud amháin a roghnú." + +#: db/models/fields/related.py:1020 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr "" - -#: forms/fields.py:53 -msgid "Enter a valid value." -msgstr "" - -#: forms/fields.py:133 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" - -#: forms/fields.py:134 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" - -#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "" - -#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "" - -#: forms/fields.py:190 forms/fields.py:219 +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Cuir aitheantas bailí %(self)s isteach. Tá an luach %(value)r neamhbhailí." +msgstr[1] "Cuir aitheantas bailí %(self)s isteach. Tá na luachanna %(value)r neamhbhailí." +msgstr[2] "Cuir aitheantas bailí %(self)s isteach. Tá na luachanna %(value)r neamhbhailí." +msgstr[3] "Cuir aitheantas bailí %(self)s isteach. Tá na luachanna %(value)r neamhbhailí." +msgstr[4] "Cuir aitheantas bailí %(self)s isteach. Tá na luachanna %(value)r neamhbhailí." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Tá an réimse seo riachtanach." + +#: forms/fields.py:195 +msgid "Enter a whole number." +msgstr "Cuir slánuimhir isteach." + +#: forms/fields.py:225 +#: forms/fields.py:245 msgid "Enter a number." -msgstr "" - -#: forms/fields.py:222 +msgstr "Cuir uimhir isteach." + +#: forms/fields.py:248 #, python-format msgid "Ensure that there are no more than %s digits in total." -msgstr "" - -#: forms/fields.py:223 +msgstr "Bí cinnte nach bhfuil níos mó ná %s digit ann." + +#: forms/fields.py:249 #, python-format msgid "Ensure that there are no more than %s decimal places." -msgstr "" - -#: forms/fields.py:224 +msgstr "Bí cinnte nach bhfuil níos mó ná %s ionad deachúlach ann." + +#: forms/fields.py:250 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "" - -#: forms/fields.py:272 forms/fields.py:793 +msgstr "Bí cinnte nach bhfuil níos mó ná %s digit roimh an bpointe deachúlach." + +#: forms/fields.py:311 +#: forms/fields.py:826 msgid "Enter a valid date." -msgstr "" - -#: forms/fields.py:305 forms/fields.py:794 +msgstr "Cuir dáta bailí isteach." + +#: forms/fields.py:339 +#: forms/fields.py:827 msgid "Enter a valid time." -msgstr "" - -#: forms/fields.py:344 +msgstr "Cuir am bailí isteach." + +#: forms/fields.py:365 msgid "Enter a valid date/time." -msgstr "" - -#: forms/fields.py:431 +msgstr "Cuir dáta/am bailí isteach." + +#: forms/fields.py:423 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Níor seoladh comhad. Deimhnigh cineál an ionchódaithe ar an bhfoirm." + +#: forms/fields.py:424 msgid "No file was submitted." -msgstr "" - -#: forms/fields.py:432 oldforms/__init__.py:689 +msgstr "Níor seoladh aon chomhad." + +#: forms/fields.py:425 msgid "The submitted file is empty." -msgstr "" - -#: forms/fields.py:522 -msgid "Enter a valid URL." -msgstr "" - -#: forms/fields.py:523 -msgid "This URL appears to be a broken link." -msgstr "" - -#: forms/fields.py:591 forms/fields.py:642 +msgstr "Tá an comhad a seoladh folamh." + +#: forms/fields.py:426 +#, python-format +msgid "Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "Cinntiú go bhfuil níos lú ná %(max)d carachtair (tá sé %(length)d) ag ainm an chomhaid seo." + +#: forms/fields.py:461 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Uasluchtaigh íomhá bhailí. Níorbh íomhá é an comhad a d'uasluchtaigh tú, nó b'íomhá thruaillithe é." + +#: forms/fields.py:584 +#: forms/fields.py:659 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." -msgstr "" - -#: forms/fields.py:643 forms/fields.py:704 forms/models.py:528 +msgstr "Déan rogha bhailí. Ní ceann de na roghanna é %(value)s." + +#: forms/fields.py:660 +#: forms/fields.py:722 +#: forms/models.py:979 msgid "Enter a list of values." -msgstr "" - -#: forms/fields.py:822 -msgid "Enter a valid IPv4 address." -msgstr "" - -#: forms/models.py:461 +msgstr "Cuir liosta de luachanna isteach." + +#: forms/formsets.py:290 +#: forms/formsets.py:292 +msgid "Order" +msgstr "Ord" + +#: forms/models.py:546 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Le do thoil ceartaigh an sonra dúbail le %(field)s." + +#: forms/models.py:550 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "Ceart le do thoil na sonraí a dhúbailt le haghaidh %(field)s, chaithfidh a bheith uathúil." + +#: forms/models.py:556 +#, python-format +msgid "Please correct the duplicate data for %(field_name)s which must be unique for the %(lookup)s in %(date_field)s." +msgstr "Ceart le do thoil na sonraí a dhúbailt le haghaidh %(field_name)s ní mór a bheith uaithúil le haghaidh an %(lookup)s i %(date_field)s." + +#: forms/models.py:564 +msgid "Please correct the duplicate values below." +msgstr "Le do thoil ceartaigh na luachanna dúbail thíos." + +#: forms/models.py:838 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "Ní raibh an eochair eachtrach comhoiriúnach leis an tuismitheoir ásc príomh-eochair." + +#: forms/models.py:904 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "" - -#: forms/models.py:529 +msgstr "Déan rogha bhailí. Ní ceann de na roghanna é do roghasa." + +#: forms/models.py:980 #, python-format msgid "Select a valid choice. %s is not one of the available choices." -msgstr "" - -#: oldforms/__init__.py:405 -#, python-format -msgid "Ensure your text is less than %s character." -msgstr "" - -#: oldforms/__init__.py:410 -msgid "Line breaks are not allowed here." -msgstr "" - -#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621 +msgstr "Déan rogha bhailí. Ní ceann de na roghanna é %s." + +#: forms/models.py:982 #, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "" - -#: oldforms/__init__.py:750 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "" - -#: oldforms/__init__.py:760 -msgid "Enter a positive number." -msgstr "" - -#: oldforms/__init__.py:770 -msgid "Enter a whole number between 0 and 32,767." -msgstr "" - -#: template/defaultfilters.py:698 +msgid "\"%s\" is not a valid value for a primary key." +msgstr "Níl \"%s\" luach bailí le príomh-eochair." + +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "tá, níl, b'fhéidir" -#: template/defaultfilters.py:729 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" -msgstr "" - -#: template/defaultfilters.py:731 +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d beart" +msgstr[1] "%(size)d bearta" + +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:733 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:734 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "p.m." -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "a.m." -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "PM" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "AM" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "meán oíche" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" msgstr "nóin" @@ -4235,23 +4764,28 @@ msgid "February" msgstr "Mí Feabhra" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "March" msgstr "Mí Márta" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "April" msgstr "Aibreán" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "May" msgstr "Bealtaine" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "June" msgstr "Mí an Mheithimh" -#: utils/dates.py:19 utils/dates.py:31 +#: utils/dates.py:19 +#: utils/dates.py:31 msgid "July" msgstr "Mí Iúil" @@ -4351,7 +4885,7 @@ msgid "Dec." msgstr "Nol" -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "nó" @@ -4391,54 +4925,212 @@ msgstr[0] "nóiméad" msgstr[1] "nóiméad" -#: utils/timesince.py:46 +#: utils/timesince.py:45 msgid "minutes" msgstr "nóiméad" -#: utils/timesince.py:51 +#: utils/timesince.py:50 #, python-format msgid "%(number)d %(type)s" -msgstr "" - -#: utils/timesince.py:57 +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:56 #, python-format msgid ", %(number)d %(type)s" -msgstr "" - -#: utils/translation/trans_real.py:401 +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" -msgstr "DATE_FORMAT" - -#: utils/translation/trans_real.py:402 +msgstr "N j, Y" + +#: utils/translation/trans_real.py:513 msgid "DATETIME_FORMAT" msgstr "DATETIME_FORMAT" -#: utils/translation/trans_real.py:403 +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" -msgstr "TIME_FORMAT" - -#: utils/translation/trans_real.py:419 +msgstr "P" + +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" -msgstr "YEAR_MONTH_FORMAT" - -#: utils/translation/trans_real.py:420 +msgstr "F Y" + +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" -msgstr "MONTH_DAY_FORMAT" - -#: views/generic/create_update.py:114 +msgstr "F j" + +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." -msgstr "" - -#: views/generic/create_update.py:156 +msgstr "D'éirigh le cruthú %(verbose_name)s." + +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." -msgstr "" - -#: views/generic/create_update.py:198 +msgstr "D'éirigh le nuashonrú %(verbose_name)s." + +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." -msgstr "" - +msgstr "Scriosadh %(verbose_name)s." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Ceann amhain nó níos mó %(fieldname)s in %(name)s: %(obj)s" +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Ceann amhain nó níos mó %(fieldname)s in %(name)s:" +#~ msgid "Old password:" +#~ msgstr "Sean-focal faire" +#~ msgid "Add user" +#~ msgstr "Cuir úsaideoir le" +#~ msgid "Relation to parent model" +#~ msgstr "Cine do samhail máthair" +#~ msgid "Comment moderation queue" +#~ msgstr "Ciú modhnóireacht nótaí tráchta" +#~ msgid "No comments to moderate" +#~ msgstr "Dada nótaí tráchta le modhnóireacht" +#~ msgid "Email" +#~ msgstr "R-phost" +#~ msgid "Authenticated?" +#~ msgstr "Fhíordheimhniú?" +#~ msgid "IP Address" +#~ msgstr "Seol IP" +#~ msgid "Date posted" +#~ msgstr "Dáta teacht isteach" +#~ msgid "yes" +#~ msgstr "tá" +#~ msgid "no" +#~ msgstr "níl" +#~ msgid "DATE_WITH_TIME_FULL" +#~ msgstr "DATE_WITH_TIME_FULL" +#~ msgid "headline" +#~ msgstr "ceannlíne" +#~ msgid "rating #1" +#~ msgstr "rátáil #1" +#~ msgid "rating #2" +#~ msgstr "rátáil #2" +#~ msgid "rating #3" +#~ msgstr "rátáil #3" +#~ msgid "rating #4" +#~ msgstr "rátáil #4" +#~ msgid "rating #5" +#~ msgstr "rátáil #5" +#~ msgid "rating #6" +#~ msgstr "rátáil #6" +#~ msgid "rating #7" +#~ msgstr "rátáil #7" +#~ msgid "rating #8" +#~ msgstr "rátáil #8" +#~ msgid "is valid rating" +#~ msgstr "is rátáil bailí" +#~ msgid "Content object" +#~ msgstr "Oibiacht inneachar" +#~ msgid "person's name" +#~ msgstr "Ainm" +#~ msgid "ip address" +#~ msgstr "seoladh ip" +#~ msgid "approved by staff" +#~ msgstr "ceadaithe tríd an foireann" +#~ msgid "free comments" +#~ msgstr "Nótaí tráchtaí saoire" +#~ msgid "score" +#~ msgstr "scór" +#~ msgid "score date" +#~ msgstr "Dáta scór" +#~ msgid "karma score" +#~ msgstr "Scór karma" +#~ msgid "karma scores" +#~ msgstr "Scóra karma" +#~ msgid "%(score)d rating by %(user)s" +#~ msgstr "%(score)d rátailte trí %(user)s" +#~ msgid "" +#~ "This comment was flagged by %(user)s:\n" +#~ "\n" +#~ "%(text)s" +#~ msgstr "" +#~ "Bhí bratach curtha leis an nóta tráchta seo trí %(user)s:\n" +#~ "\n" +#~ "%(text)s" +#~ msgid "flag date" +#~ msgstr "Dáta brait" +#~ msgid "user flag" +#~ msgstr "Brat úsáideoir" +#~ msgid "user flags" +#~ msgstr "Brait úsáideoira" +#~ msgid "Flag by %r" +#~ msgstr "Cuir brat leis roimh %r" +#~ msgid "deletion date" +#~ msgstr "Dáta scrioseadh" +#~ msgid "moderator deletions" +#~ msgstr "Scrios modhnóra" +#~ msgid "Moderator deletion by %r" +#~ msgstr "Scrios modhnóir trí %r" +#~ msgid "Forgotten your password?" +#~ msgstr "Dearmad déanta ar do focal faire?" +#~ msgid "Ratings" +#~ msgstr "Rátála" +#~ msgid "Required" +#~ msgstr "Riachtanach" +#~ msgid "Optional" +#~ msgstr "Roghnach" +#~ msgid "Post a photo" +#~ msgstr "Post griangraf" +#~ msgid "Your name:" +#~ msgstr "Do chuid ainm:" +#~ msgid "" +#~ "This rating is required because you've entered at least one other rating." +#~ msgstr "" +#~ "Tá an rátáil seo ag teastail mar cuir tú rátáil amhain eile isteach ar a " +#~ "laghad." +#~ msgid "" +#~ "This comment was posted by a user who has posted fewer than %(count)s " +#~ "comment:\n" +#~ "\n" +#~ "%(text)sThis comment was posted by a user who has posted fewer than %" +#~ "(count)s comments:\n" +#~ "\n" +#~ "%(text)s" +#~ msgstr "" +#~ "Bhí an nóta tráchta póstailte trí úsáideoir a cuir níos lú ná %(count)s " +#~ "nótaí tráchtaí\n" +#~ "\n" +#~ "%(text)sBhí an nóta tráchta póstailte trí úsáideoir a cuir níos lú ná %" +#~ "(count)s nótaí tráchtaí\n" +#~ "\n" +#~ "%(text)s" +#~ msgid "Only POSTs are allowed" +#~ msgstr "POSTs amhain ceadaithe" +#~ msgid "One or more of the required fields wasn't submitted" +#~ msgstr "" +#~ "Níor curtha isteach ceann amhain nó níos mó de na réimse riachtanach" +#~ msgid "Somebody tampered with the comment form (security violation)" +#~ msgstr "" +#~ "Cuir duine éigin isteach leis an foirm nóta tráchta (fadbh slándála)" +#~ msgid "" +#~ "The comment form had an invalid 'target' parameter -- the object ID was " +#~ "invalid" +#~ msgstr "" +#~ "Bhí paraiméadar targaid mícheart ag an foirm nóta tráchta -- bhí ID an " +#~ "oibiacht neamhbhailí" +#~ msgid "The comment form didn't provide either 'preview' or 'post'" +#~ msgstr "Níor sholáthair an foirm nóta tráchta 'réamhamharc' nó 'post'" +#~ msgid "Anonymous users cannot vote" +#~ msgstr "Níl cead ag úsáideoira anaithnid vótáil" +#~ msgid "Invalid comment ID" +#~ msgstr "Nóta tráchta ID neamhbhailí" +#~ msgid "No voting for yourself" +#~ msgstr "Vótáil leat féin coiscthe" +#~ msgid "Uppercase letters are not allowed here." +#~ msgstr "Níl cás uachtair ceadaithe anseo." +#~ msgid "Enter valid e-mail addresses separated by commas." +#~ msgstr "Cuir isteach r-phostanna bailí scartha le camóige." +#~ msgid "Please enter a valid IP address." +#~ msgstr "Le do thoil cuir isteach seoladh IP bailí." +#~ msgid "Empty values are not allowed here." +#~ msgstr "Níl méideanna folmh ceadaithe anseo." +#~ msgid "Non-numeric characters aren't allowed here." +#~ msgstr "Níl ach uimhreacha ceadaithe anseo." +#~ msgid "This value can't be comprised solely of digits." +#~ msgstr "Cathaigh níos mó ná digite amháin sa méid seo." #~ msgid "Gaeilge" #~ msgstr "Gaeilge" + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ga/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/ga/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ga/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/ga/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/ga/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-14 12:33+0100\n" +"POT-Creation-Date: 2009-12-22 20:42+0100\n" "PO-Revision-Date: 2008-01-23 11:04+0100\n" "Last-Translator: Michael Thornhill \n" "Language-Team: Gaeilge \n" @@ -15,19 +15,6 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: contrib/admin/media/js/calendar.js:24 -#: contrib/admin/media/js/dateparse.js:32 -msgid "January February March April May June July August September October November December" -msgstr "Eanair Feabhra Márta Aibreán Bealtaine Meitheamh Iúil Lúnasa Mean Fómhair Deireadh Fómhair Nollaig" - -#: contrib/admin/media/js/calendar.js:25 -msgid "S M T W T F S" -msgstr "D L M C D A S" - -#: contrib/admin/media/js/dateparse.js:33 -msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "Domhnaigh Luain Máirt Céadaoin Déardaoin Aoine Sathairn" - #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format msgid "Available %s" @@ -58,6 +45,36 @@ msgid "Clear all" msgstr "Glan iomlán" +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Eanair Feabhra Márta Aibreán Bealtaine Meitheamh Iúil Lúnasa Mean Fómhair " +"Deireadh Fómhair Nollaig" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "D L M C D A S" + +#: contrib/admin/media/js/calendar.js:26 +msgid "FIRST_DAY_OF_WEEK" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Domhnaigh Luain Máirt Céadaoin Déardaoin Aoine Sathairn" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "Taispeán" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "Folaigh" + #: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Now" @@ -104,13 +121,3 @@ #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" msgstr "Amárach" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Taispeán" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Folaigh" - diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ga/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ga/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ga/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/gl/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/gl/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/gl/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M, Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/he/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/he/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/he/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/he/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/he/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -1,12 +1,13 @@ # translation of Django. # Copyright (C) 2008 The Django Project # This file is distributed under the same license as the Django package. +# msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-08 08:21-0500\n" -"PO-Revision-Date: 2009-05-08 15:31+0100\n" +"POT-Creation-Date: 2010-05-01 20:11+0200\n" +"PO-Revision-Date: 2010-05-01 12:27-0500\n" "Last-Translator: Alex \n" "Language-Team: Django-i18n \n" "MIME-Version: 1.0\n" @@ -14,225 +15,260 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Bookmarks: -1,988,-1,-1,-1,-1,-1,-1,-1,-1\n" +"X-Generator: Lokalize 1.0\n" #: conf/global_settings.py:44 msgid "Arabic" msgstr "ערבית" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "בנגאלית" +msgid "Bulgarian" +msgstr "בולגרית" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "בולגרית" +msgid "Bengali" +msgstr "בנגאלית" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "בוסנית" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "קאטלונית" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "צ'כית" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "וולשית" -#: conf/global_settings.py:50 -msgid "Danish" -msgstr "דנית" - #: conf/global_settings.py:51 -msgid "German" -msgstr "גרמנית" +msgid "Danish" +msgstr "דנית" #: conf/global_settings.py:52 +msgid "German" +msgstr "גרמנית" + +#: conf/global_settings.py:53 msgid "Greek" msgstr "יוונית" -#: conf/global_settings.py:53 -msgid "English" -msgstr "אנגלית" - #: conf/global_settings.py:54 -msgid "Spanish" -msgstr "ספרדית" +msgid "English" +msgstr "אנגלית" #: conf/global_settings.py:55 -msgid "Estonian" -msgstr "אסטונית" +msgid "British English" +msgstr "אנגלית בריטית" #: conf/global_settings.py:56 +msgid "Spanish" +msgstr "ספרדית" + +#: conf/global_settings.py:57 msgid "Argentinean Spanish" msgstr "ספרדית ארגנטינאית" -#: conf/global_settings.py:57 -msgid "Basque" -msgstr "בסקית" - #: conf/global_settings.py:58 -msgid "Persian" -msgstr "פרסית" +msgid "Estonian" +msgstr "אסטונית" #: conf/global_settings.py:59 -msgid "Finnish" -msgstr "פינית" +msgid "Basque" +msgstr "בסקית" #: conf/global_settings.py:60 -msgid "French" -msgstr "צרפתית" +msgid "Persian" +msgstr "פרסית" #: conf/global_settings.py:61 -msgid "Irish" -msgstr "אירית" +msgid "Finnish" +msgstr "פינית" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "גאליצית" +msgid "French" +msgstr "צרפתית" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "הונגרית" +msgid "Frisian" +msgstr "פריזית" #: conf/global_settings.py:64 +msgid "Irish" +msgstr "אירית" + +#: conf/global_settings.py:65 +msgid "Galician" +msgstr "גאליציאנית" + +#: conf/global_settings.py:66 msgid "Hebrew" msgstr "עברית" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Hindi" msgstr "הינדי" -#: conf/global_settings.py:66 -msgid "Croatian" -msgstr "קרואטית" - -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "איסלנדית" - #: conf/global_settings.py:68 +msgid "Croatian" +msgstr "קרואטית" + +#: conf/global_settings.py:69 +msgid "Hungarian" +msgstr "הונגרית" + +#: conf/global_settings.py:70 +msgid "Icelandic" +msgstr "איסלנדית" + +#: conf/global_settings.py:71 msgid "Italian" msgstr "איטלקית" -#: conf/global_settings.py:69 +#: conf/global_settings.py:72 msgid "Japanese" msgstr "יפנית" -#: conf/global_settings.py:70 +#: conf/global_settings.py:73 msgid "Georgian" msgstr "גיאורגית" -#: conf/global_settings.py:71 +#: conf/global_settings.py:74 +msgid "Khmer" +msgstr "חמר" + +# זו שפה הודית, אין קשר לקנדה המדינה +#: conf/global_settings.py:75 +msgid "Kannada" +msgstr "קאנאדה" + +#: conf/global_settings.py:76 msgid "Korean" msgstr "קוריאנית" -#: conf/global_settings.py:72 -msgid "Khmer" -msgstr "חמר" - -#: conf/global_settings.py:73 -msgid "Kannada" -msgstr "קנדית" - -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "לטבית" - -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 msgid "Lithuanian" msgstr "ליטאית" -#: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "מקדונית" - -#: conf/global_settings.py:77 -msgid "Dutch" -msgstr "הולנדית" - #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "נורווגית" +msgid "Latvian" +msgstr "לטבית" #: conf/global_settings.py:79 -msgid "Polish" -msgstr "פולנית" +msgid "Macedonian" +msgstr "מקדונית" #: conf/global_settings.py:80 -msgid "Portuguese" -msgstr "פורטוגזית" +msgid "Dutch" +msgstr "הולנדית" #: conf/global_settings.py:81 -msgid "Brazilian Portuguese" -msgstr "פורטוגזית ברזילאית" +msgid "Norwegian" +msgstr "נורווגית" #: conf/global_settings.py:82 -msgid "Romanian" -msgstr "רומנית" +#, fuzzy +msgid "Norwegian Bokmal" +msgstr "נורווגית" #: conf/global_settings.py:83 -msgid "Russian" -msgstr "רוסית" +#, fuzzy +msgid "Norwegian Nynorsk" +msgstr "נורווגית" #: conf/global_settings.py:84 -msgid "Slovak" -msgstr "סלובקית" +msgid "Polish" +msgstr "פולנית" #: conf/global_settings.py:85 -msgid "Slovenian" -msgstr "סלובנית" +msgid "Portuguese" +msgstr "פורטוגזית" #: conf/global_settings.py:86 -msgid "Serbian" -msgstr "סרבית" +msgid "Brazilian Portuguese" +msgstr "פורטוגזית ברזילאית" #: conf/global_settings.py:87 -msgid "Swedish" -msgstr "שוודית" +msgid "Romanian" +msgstr "רומנית" #: conf/global_settings.py:88 +msgid "Russian" +msgstr "רוסית" + +#: conf/global_settings.py:89 +msgid "Slovak" +msgstr "סלובקית" + +#: conf/global_settings.py:90 +msgid "Slovenian" +msgstr "סלובנית" + +#: conf/global_settings.py:91 +msgid "Albanian" +msgstr "אלבנית" + +#: conf/global_settings.py:92 +msgid "Serbian" +msgstr "סרבית" + +#: conf/global_settings.py:93 +msgid "Serbian Latin" +msgstr "סרבית לטינית" + +#: conf/global_settings.py:94 +msgid "Swedish" +msgstr "שוודית" + +#: conf/global_settings.py:95 msgid "Tamil" msgstr "טמילית" -#: conf/global_settings.py:89 +#: conf/global_settings.py:96 msgid "Telugu" msgstr "טלגו" -#: conf/global_settings.py:90 +#: conf/global_settings.py:97 msgid "Thai" msgstr "תאילנדית" -#: conf/global_settings.py:91 +#: conf/global_settings.py:98 msgid "Turkish" msgstr "טורקית" -#: conf/global_settings.py:92 +#: conf/global_settings.py:99 msgid "Ukrainian" msgstr "אוקראינית" -#: conf/global_settings.py:93 +#: conf/global_settings.py:100 +msgid "Vietnamese" +msgstr "וייטנאמית" + +#: conf/global_settings.py:101 msgid "Simplified Chinese" msgstr "סינית פשוטה" -#: conf/global_settings.py:94 +#: conf/global_settings.py:102 msgid "Traditional Chinese" msgstr "סינית מסורתית" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." -msgstr "%(count)d %(items)s היו נמחקו בהצלחה." - -#: contrib/admin/actions.py:67 -#: contrib/admin/options.py:1025 +msgstr "%(count)d %(items)s נמחקו בהצלחה." + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 msgid "Are you sure?" msgstr "האם את/ה בטוח/ה ?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" -msgstr "מחק את %(verbose_name_plural)s שבחרת בו" +msgstr "מחק %(verbose_name_plural)s שנבחרו" #: contrib/admin/filterspecs.py:44 #, python-format @@ -243,10 +279,8 @@ "

                  ע\"י %s:

                  \n" "
                    \n" -#: contrib/admin/filterspecs.py:75 -#: contrib/admin/filterspecs.py:92 -#: contrib/admin/filterspecs.py:147 -#: contrib/admin/filterspecs.py:173 +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 msgid "All" msgstr "הכל" @@ -270,22 +304,19 @@ msgid "This year" msgstr "השנה" -#: contrib/admin/filterspecs.py:147 -#: forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "כן" -#: contrib/admin/filterspecs.py:147 -#: forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "לא" -#: contrib/admin/filterspecs.py:154 -#: forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "לא ידוע" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "פעולה" @@ -317,183 +348,189 @@ msgid "log entries" msgstr "רישומי יומן" -#: contrib/admin/options.py:133 -#: contrib/admin/options.py:147 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "ללא" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "%s שונה." -#: contrib/admin/options.py:519 -#: contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 -#: forms/models.py:388 -#: forms/models.py:587 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 msgid "and" msgstr "ו" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "התווסף %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "שונה %(list)s עבור %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "נמחק %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "אף שדה לא השתנה." -#: contrib/admin/options.py:598 -#: contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה." -#: contrib/admin/options.py:602 -#: contrib/admin/options.py:635 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "ניתן לערוך שוב מתחת" -#: contrib/admin/options.py:612 -#: contrib/admin/options.py:645 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "ניתן להוסיף %s נוסף מתחת." -#: contrib/admin/options.py:633 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "שינוי %(name)s \"%(obj)s\" בוצע בהצלחה." -#: contrib/admin/options.py:641 +#: contrib/admin/options.py:690 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת." -#: contrib/admin/options.py:772 +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "יש לסמן פריטים כדי לבצע עליהם פעולות. לא שונו פריטים." + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "לא נבחרה פעולה." + +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "הוספת %s" -#: contrib/admin/options.py:803 -#: contrib/admin/options.py:1003 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "הפריט %(name)s עם המפתח הראשי %(key)r אינו קיים." -#: contrib/admin/options.py:860 +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" msgstr "שינוי %s" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:978 msgid "Database error" msgstr "שגיאת בסיס נתונים" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:1014 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "שינוי %(count)s %(name)s בהצלחה." msgstr[1] "שינוי %(count)s %(name)s בהצלחה." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s נבחר" +msgstr[1] "כל ה־%(total_count)s נבחרו" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 מ %(cnt)s נבחרות" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "מחיקת %(name)s \"%(obj)s\" בוצעה בהצלחה." -#: contrib/admin/options.py:1054 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "היסטוריית שינוי: %s" -#: contrib/admin/sites.py:20 -#: contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 -msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה." - -#: contrib/admin/sites.py:278 -#: contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה." + +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "עליך להתחבר שנית כי פג הזמן המוקצב לך." -#: contrib/admin/sites.py:285 -#: contrib/admin/views/decorators.py:47 -msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "נראה שהדפדפן שלך אינו מוגדר לקבל עוגיות. נא לאפשר עוגיות, לטעון מחדש את הדף ולנסות שוב." - -#: contrib/admin/sites.py:301 -#: contrib/admin/sites.py:307 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"נראה שהדפדפן שלך אינו מוגדר לקבל עוגיות. נא לאפשר עוגיות, לטעון מחדש את הדף " +"ולנסות שוב." + +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "שם משתמש אינו יכול להכיל את התו '@'." -#: contrib/admin/sites.py:304 -#: contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "כתובת הדוא\"ל שלך אינה שם המשתמש שלך. נסה/י '%s' במקום." -#: contrib/admin/sites.py:360 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "ניהול אתר" -#: contrib/admin/sites.py:373 -#: contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "כניסה" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "ניהול %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "אחד או יותר %(fieldname)s ב%(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "אחד או יותר %(fieldname)s ב%(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "תאריך:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "שעה:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "הנוכחי:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "שינוי:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "חפש" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "הוסף עוד אחת" @@ -508,17 +545,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -540,8 +577,11 @@ msgstr "שגיאת שרת (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 "התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך." +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 "" +"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך." #: contrib/admin/templates/admin/actions.html:4 msgid "Run the selected action" @@ -551,34 +591,47 @@ msgid "Go" msgstr "בצע" +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "לחיצה כאן תבחר את האובייקטים בכל העמודים" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "בחירת כל %(total_count)s ה־%(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "איפוס בחירה" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "שלום," -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "תיעוד" -#: contrib/admin/templates/admin/base.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "שינוי סיסמה" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "יציאה" @@ -590,54 +643,63 @@ msgid "Django administration" msgstr "ניהול Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "הוספה" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "היסטוריה" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "צפיה באתר" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "נא לתקן את השגיאה המופיעה מתחת." msgstr[1] "נא לתקן את השגיאות המופיעות מתחת." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "הוספת %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "סינון" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 -#: forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "מחיקה" #: contrib/admin/templates/admin/delete_confirmation.html:16 #, python-format -msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, אך לחשבון שלך אין הרשאות למחיקת סוגי האובייקטים הבאים:" +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, " +"אך לחשבון שלך אין הרשאות למחיקת סוגי האובייקטים הבאים:" #: contrib/admin/templates/admin/delete_confirmation.html:23 #, python-format -msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:" -msgstr "האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? כל הפריטים הקשורים הבאים יימחקו:" +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? כל הפריטים " +"הקשורים הבאים יימחקו:" #: contrib/admin/templates/admin/delete_confirmation.html:28 #: contrib/admin/templates/admin/delete_selected_confirmation.html:33 @@ -650,13 +712,22 @@ #: contrib/admin/templates/admin/delete_selected_confirmation.html:15 #, python-format -msgid "Deleting the %(object_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "מחיקת %(object_name)s מצריכה מחיקת אובייקטים מקושרים, אך לחשבון שלך אין הרשאות למחיקת סוגי האובייקטים הבאים:" +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"מחיקת %(object_name)s מצריכה מחיקת אובייקטים מקושרים, אך לחשבון שלך אין " +"הרשאות למחיקת סוגי האובייקטים הבאים:" #: contrib/admin/templates/admin/delete_selected_confirmation.html:22 #, python-format -msgid "Are you sure you want to delete the selected %(object_name)s objects? All of the following objects and it's related items will be deleted:" -msgstr "האם אתה בטוח שאתה רוצה למחוק את פריטי ה %(object_name)s שנבחרו. כל הפריטים הבאים והחומר הנלווה אליהם יימחקו." +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"האם אתה בטוח שאתה רוצה למחוק את פריטי ה %(object_name)s שנבחרו. כל הפריטים " +"הבאים והחומר הנלווה אליהם יימחקו." #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -693,8 +764,13 @@ msgstr "תוכן לא ידוע" #: contrib/admin/templates/admin/invalid_setup.html:7 -msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." -msgstr "משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים." +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים " +"המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים." #: contrib/admin/templates/admin/login.html:19 msgid "Username:" @@ -713,23 +789,25 @@ msgstr "משתמש" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "פעולה" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "d.m.‏Y H:i:s" - #: contrib/admin/templates/admin/object_history.html:38 -msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "הצג הכל" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "שמירה" + #: contrib/admin/templates/admin/search_form.html:8 msgid "Search" msgstr "חיפוש" @@ -746,10 +824,6 @@ msgid "%(full_result_count)s total" msgstr "%(full_result_count)s סה\"כ" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "שמירה" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "שמירה כחדש" @@ -762,41 +836,47 @@ msgid "Save and continue editing" msgstr "שמירה והמשך עריכה" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "First, enter a username and password. Then, you'll be able to edit more user options." -msgstr "ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויות נוספות עבור המשתמש." - -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 -#: contrib/auth/forms.py:47 -#: contrib/auth/forms.py:59 -msgid "Username" -msgstr "שם משתמש" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 -#: contrib/auth/forms.py:60 -#: contrib/auth/forms.py:185 -msgid "Password" -msgstr "סיסמה" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "סיסמה (שוב)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "יש להזין את אותה סיסמה שוב,לאימות." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויות נוספות " +"עבור המשתמש." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "יש להזין סיסמה חדשה עבור המשתמש %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "סיסמה" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "סיסמה (שוב)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "יש להזין את אותה סיסמה שוב,לאימות." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "הוספת %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "להסיר" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "מחיקה ?" @@ -810,9 +890,9 @@ msgstr "התחבר/י שוב" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "שינוי סיסמה" @@ -825,25 +905,25 @@ msgid "Your password was changed." msgstr "סיסמתך שונתה." -#: 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 "נא להזין את סיסמתך הישנה, למען האבטחה, ולאחר מכן את סיסמתך החדשה פעמיים כדי שנוכל לוודא שהקלדת אותה כראוי." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "סיסמה ישנה:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "סיסמה חדשה:" - #: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "אימות סיסמה:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +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 "" +"נא להזין את סיסמתך הישנה, לצרכי אבטחה, ולאחר מכן את סיסמתך החדשה פעמיים כדי " +"שנוכל לוודא שהקלדת אותה כראוי." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "סיסמה ישנה" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "סיסמה חדשה" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "שנה את סיסמתי" @@ -875,16 +955,30 @@ msgstr "הזנת סיסמה חדשה" #: contrib/admin/templates/registration/password_reset_confirm.html:14 -msgid "Please enter your new password twice so we can verify you typed it in correctly." +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." msgstr "נא להזין את סיסמתך החדשה פעמיים כדי שנוכל לוודא שהקלדת אותה כראוי." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "סיסמה חדשה:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "אימות סיסמה:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "איפוס הסיסמה נכשל" #: contrib/admin/templates/registration/password_reset_confirm.html:28 -msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "הקישור לאיפוס הסיסמה אינו חוקי. ייתכן והשתמשו בו כבר. נא לבקש איפוס סיסמה חדש." +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"הקישור לאיפוס הסיסמה אינו חוקי. ייתכן והשתמשו בו כבר. נא לבקש איפוס סיסמה " +"חדש." #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 @@ -892,8 +986,11 @@ msgstr "הסיסמה אופסה בהצלחה" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "שלחנו הוראות לקביעת הסיסמה אל כתובת הדוא\"ל שהזנת. ההודעה אמורה להתקבל בקרוב." +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"שלחנו הוראות לקביעת הסיסמה אל כתובת הדוא\"ל שהזנת. ההודעה אמורה להתקבל בקרוב." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -922,8 +1019,12 @@ msgstr "צוות %(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 e-mail instructions for setting a new one." -msgstr "שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, ואנו נשלח הוראות לקביעת סיסמה חדשה." +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" +"שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, ואנו נשלח הוראות לקביעת " +"סיסמה חדשה." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -933,7 +1034,7 @@ msgid "Reset my password" msgstr "אפס את סיסמתי" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "כל התאריכים" @@ -947,166 +1048,71 @@ msgid "Select %s to change" msgstr "בחירת %s לשינוי" -#: contrib/admin/views/template.py:37 -#: contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "אתר" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "תבנית" -#: contrib/admindocs/views.py:58 -#: contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "תג:" -#: contrib/admindocs/views.py:91 -#: contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "סינון:" -#: contrib/admindocs/views.py:155 -#: contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" -msgstr "ה-view:" - -#: contrib/admindocs/views.py:187 +msgstr "ה־view:" + +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "יישום %r לא נמצא" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "מודל %(model_name)r לא נמצא ביישום %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "אוביקטי `%(app_label)s.%(data_type)s` קשורים" -#: contrib/admindocs/views.py:206 -#: contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "מודל:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "אובייקטי `%(app_label)s.%(object_name)s` קשורים" -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "כל %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "מספר %s" -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" -msgstr "Fields on %s objects" - -#: contrib/admindocs/views.py:315 -#: contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 -#: contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 -#: contrib/admindocs/views.py:337 -msgid "Integer" -msgstr "מספר שלם" - -#: contrib/admindocs/views.py:316 -msgid "Boolean (Either True or False)" -msgstr "בוליאני (אמת או שקר)" - -#: contrib/admindocs/views.py:317 -#: contrib/admindocs/views.py:336 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "מחרוזת (עד %(max_length)s תווים)" - -#: contrib/admindocs/views.py:318 -msgid "Comma-separated integers" -msgstr "מספרים שלמים מופרדים בפסיקים" - -#: contrib/admindocs/views.py:319 -msgid "Date (without time)" -msgstr "תאריך (ללא שעה)" - -#: contrib/admindocs/views.py:320 -msgid "Date (with time)" -msgstr "תאריך (כולל שעה)" - -#: contrib/admindocs/views.py:321 -msgid "Decimal number" -msgstr "מספר עשרוני" - -#: contrib/admindocs/views.py:322 -msgid "E-mail address" -msgstr "כתובת דוא\"ל" - -#: contrib/admindocs/views.py:323 -#: contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 -msgid "File path" -msgstr "נתיב קובץ" - -#: contrib/admindocs/views.py:325 -msgid "Floating point number" -msgstr "מספר עשרוני" - -#: contrib/admindocs/views.py:329 -#: contrib/comments/models.py:60 -msgid "IP address" -msgstr "כתובת IP" - -#: contrib/admindocs/views.py:331 -msgid "Boolean (Either True, False or None)" -msgstr "בוליאני (אמת, שקר או כלום)" - -#: contrib/admindocs/views.py:332 -msgid "Relation to parent model" -msgstr "יחס למודל אב" - -#: contrib/admindocs/views.py:333 -msgid "Phone number" -msgstr "מספר טלפון" - -#: contrib/admindocs/views.py:338 -msgid "Text" -msgstr "טקסט" - -#: contrib/admindocs/views.py:339 -msgid "Time" -msgstr "זמן" - -#: contrib/admindocs/views.py:340 -#: contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 -#: contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:341 -msgid "U.S. state (two uppercase letters)" -msgstr "מדינה בארה\"ב (שתי אותיות גדולות)" - -#: contrib/admindocs/views.py:342 -msgid "XML text" -msgstr "טקסט XML" - -#: contrib/admindocs/views.py:368 +msgstr "שדות באובייקטי %s" + +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "לא נראה ש-%s הוא אובייקט urlpattern" @@ -1142,7 +1148,9 @@ msgstr "תיעוד לדף זה" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 -msgid "Jumps you from any page to the documentation for the view that generates that page." +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." msgstr "מקפיץ אותך מכל עמוד לתיעוד התצוגה שייצרה אותו." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 @@ -1150,7 +1158,9 @@ msgstr "הצג מזהה אובייקט" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 -msgid "Shows the content-type and unique ID for pages that represent a single object." +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." msgstr "מציג את סוג התוכן והמזהה הייחודי לעמודים המייצגים אובייקט בודד." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 @@ -1169,231 +1179,274 @@ msgid "As above, but opens the admin page in a new window." msgstr "כנ\"ל, אך דף הניהול ייפתח בחלון חדש." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "מידע אישי" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "הרשאות" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "תאריכים חשובים" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "קבוצות" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "הוספת משתמש" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "הסיסמה שונתה בהצלחה." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "שינוי סיסמה: %s" -#: contrib/auth/forms.py:15 -#: contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "דורש 30 תווים או פחות. תווים אלפאנומריים בלבד (אותיות, ספרות וקווים תחתונים)." - -#: contrib/auth/forms.py:16 -#: contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "ערך זה חייב להכיל אותיות, ספרות וקווים תחתונים בלבד." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "שם משתמש" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "שדה חובה. 30 תווים או פחות. אותיות, ספרות ו-@/./+/-/_ בלבד." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "ערך זה יכול להכיל אותיות, ספרות והתווים @/./+/-/_ בלבד." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "אימות סיסמה" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "משתמש עם שם משתמש זה קיים כבר" -#: contrib/auth/forms.py:36 -#: contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "שני שדות הסיסמה אינם זהים." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "חשבון זה אינו פעיל." -#: contrib/auth/forms.py:87 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." msgstr "נראה שעוגיות לא מאופשרות בדפדפן שלך. הן נדרשות כדי להתחבר." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "כתובת דוא\"ל" -#: contrib/auth/forms.py:109 -msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" msgstr "כתובת דואר אלקטרוני זו אינה משוייכת למשתמש. בטוח שנרשמת ?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "איפוס סיסמה על %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "סיסמה חדשה" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "אימות סיסמה חדשה" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "סיסמה ישנה" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "סיסמתך הישנה הוזנה בצורה שגויה. נא להזינה שוב." -#: contrib/auth/models.py:63 -#: contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "שם" -#: contrib/auth/models.py:65 -msgid "codename" -msgstr "שם קוד" - #: contrib/auth/models.py:68 +msgid "codename" +msgstr "שם קוד" + +#: contrib/auth/models.py:72 msgid "permission" msgstr "הרשאה" -#: contrib/auth/models.py:69 -#: contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "הרשאות" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "קבוצה" -#: contrib/auth/models.py:91 -#: contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "קבוצות" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "שם משתמש" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "שדה חובה. 30 תווים או פחות. אותיות, ספרות והתווים @/./+/-/_ בלבד." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "שם פרטי" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "שם משפחה" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "כתובת דוא\"ל" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "סיסמה" -#: contrib/auth/models.py:132 -msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." -msgstr "יש להזין '[algo]$[salt]$[hexdigest]' או להשתמש בטופס שינוי הסיסמה." - -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"יש להזין '[algo]$[salt]$[hexdigest]' או להשתמש בטופס " +"שינוי הסיסמה." + +#: contrib/auth/models.py:201 msgid "staff status" msgstr "סטטוס איש צוות" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "פעיל" -#: contrib/auth/models.py:134 -msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." -msgstr "מציין האם יש להתייחס למשתמש כפעיל. יש לבטל בחירה זו במקום למחוק חשבונות משתמשים." - -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"מציין האם יש להתייחס למשתמש כפעיל. יש לבטל בחירה זו במקום למחוק חשבונות " +"משתמשים." + +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "סטטוס משתמש על" -#: contrib/auth/models.py:135 -msgid "Designates that this user has all permissions without explicitly assigning them." +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." msgstr "מציין שלמשתמש זה יש את כל ההרשאות ללא הצורך המפורש בהענקתן." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "כניסה אחרונה" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "תאריך הצטרפות" -#: contrib/auth/models.py:139 -msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." -msgstr "בנוסף לכל ההרשאות שהוקצו ידנית, יוענקו למשתמש גם כל ההרשאות של כל קבוצה המשוייכת אליו." - -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"בנוסף לכל ההרשאות שהוקצו ידנית, יוענקו למשתמש גם כל ההרשאות של כל קבוצה " +"המשוייכת אליו." + +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "הרשאות משתמש" -#: contrib/auth/models.py:144 -#: contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "משתמש" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "משתמשים" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "הודעה" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "יצאת מהמערכת" #: contrib/auth/management/commands/createsuperuser.py:23 -#: forms/fields.py:429 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "יש להזין כתובת דוא\"ל חוקית." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "תוכן" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" -msgstr "מטא-נתונים" +msgstr "מטא־נתונים" + +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "סומנה" +msgstr[1] "סומנו" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "סמן תגובות שנבחרו" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "אושרה" +msgstr[1] "אושרו" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "אשר תגובות שנבחרו" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "הוסרה" +msgstr[1] "הוסרו" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "הסר תגובות שנבחרו" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "תגובה אחת %(action)s בהצלחה" +msgstr[1] "%(count)s תגובות %(action)s בהצלחה" #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" -msgstr "הערות ל %(site_name)s" +msgstr "תגובות עבור %(site_name)s" #: contrib/comments/feeds.py:23 #, python-format msgid "Latest comments on %(site_name)s" -msgstr "ההערות האחרונות על %(site_name)s" +msgstr "התגובות האחרונות על %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "שם" @@ -1401,24 +1454,28 @@ msgid "Email address" msgstr "כתובת דוא\"ל" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "תגובה" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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 אסורות לשימוש כאן." -#: contrib/comments/forms.py:180 -msgid "If you enter anything in this field your comment will be treated as spam" -msgstr "אם יוזן משהו בשדה היחס לתגובתך יהיה כמו לספאם" - -#: contrib/comments/models.py:22 -#: contrib/contenttypes/models.py:74 +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "אם יוזן משהו בשדה זה תגובתך תטופל כספאם" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "סוג תוכן" @@ -1438,8 +1495,7 @@ msgid "user's URL" msgstr "אתר המשתמש" -#: contrib/comments/models.py:56 -#: contrib/comments/models.py:76 +#: contrib/comments/models.py:56 contrib/comments/models.py:76 #: contrib/comments/models.py:169 msgid "comment" msgstr "תגובה" @@ -1448,33 +1504,46 @@ msgid "date/time submitted" msgstr "תאריך/שעת הגשה" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "כתובת IP" + #: contrib/comments/models.py:61 msgid "is public" -msgstr "ציבורי" +msgstr "פומבי " #: contrib/comments/models.py:62 -msgid "Uncheck this box to make the comment effectively disappear from the site." -msgstr "ביטול סימון תיבה תעלים בפועל את התגובה מהאתר" +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "ביטול סימון התיבה יעלים בפועל את התגובה מהאתר" #: contrib/comments/models.py:64 msgid "is removed" msgstr "האם הוסר" #: contrib/comments/models.py:65 -msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." -msgstr "יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \"תגובה זו נמחקה\" תוצג במקום." +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \"תגובה זו נמחקה\" תוצג במקום " +"התגובה." #: contrib/comments/models.py:77 msgid "comments" msgstr "תגובות" #: contrib/comments/models.py:119 -msgid "This comment was posted by an authenticated user and thus the name is read-only." -msgstr "הודעה זו נשלחה ע\"י משתמש מחובר לכן השם הוא לקריאה בלבד." +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "הודעה זו נשלחה ע\"י משתמש מחובר לכן השם אינו ניתן לשינוי." #: contrib/comments/models.py:128 -msgid "This comment was posted by an authenticated user and thus the email is read-only." -msgstr "הודעה זו נשלחה ע\"י משתמש מחובר לכן כתובת הדוא\"ל לקריאה בלבד." +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "הודעה זו נשלחה ע\"י משתמש מחובר לכן כתובת הדוא\"ל אינה ניתנת לשינוי." #: contrib/comments/models.py:153 #, python-format @@ -1513,47 +1582,42 @@ #: contrib/comments/templates/comments/approve.html:7 msgid "Really make this comment public?" -msgstr "באמת הופכים את התגובה הציבורית?" +msgstr "באמת להפוך את התגובה לפומבית?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "אשר" #: contrib/comments/templates/comments/approved.html:4 msgid "Thanks for approving" -msgstr "תודה על השימוש באתר שלנו!" +msgstr "תודה על אישור התגובה" #: contrib/comments/templates/comments/approved.html:7 #: contrib/comments/templates/comments/deleted.html:7 #: contrib/comments/templates/comments/flagged.html:7 -msgid "Thanks for taking the time to improve the quality of discussion on our site" -msgstr "תודה שהקדשת מזמנך כדי לשפר את האתר שלנו" +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "תודה על שהקדשת מזמנך כדי לשפר את איכות הדיון באתר שלנו" #: contrib/comments/templates/comments/delete.html:4 msgid "Remove a comment" -msgstr "הסר הערה" +msgstr "הסר תגובה" #: contrib/comments/templates/comments/delete.html:7 msgid "Really remove this comment?" -msgstr "באמת להסיר את הערה זו?" - -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "להסיר" +msgstr "באמת להסיר תגובה זו?" #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" -msgstr "תודה על הסרת" +msgstr "תודה על ההסרה" #: contrib/comments/templates/comments/flag.html:4 msgid "Flag this comment" -msgstr "סמן את הערה זו" +msgstr "סמן תגובה זו" #: contrib/comments/templates/comments/flag.html:7 msgid "Really flag this comment?" -msgstr "באמת, סמן את הערה זו?" +msgstr "באמת לסמן תגובה זו?" #: contrib/comments/templates/comments/flag.html:12 msgid "Flag" @@ -1561,7 +1625,7 @@ #: contrib/comments/templates/comments/flagged.html:4 msgid "Thanks for flagging" -msgstr "תודה לציון" +msgstr "תודה על הסימון" #: contrib/comments/templates/comments/form.html:17 #: contrib/comments/templates/comments/preview.html:32 @@ -1573,39 +1637,6 @@ msgid "Preview" msgstr "תצוגה מקדימה" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "תור תגובה עבור מתון של תגובות" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "אין תגובות עד בינוני" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "כתובת דוא\"ל" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "מאומתים?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "כתובת IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "תאריך הצטרפות" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "כן" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "לא" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "תודה על התגובה" @@ -1633,20 +1664,24 @@ msgid "or make changes" msgstr "או לבצע שינויים" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" -msgstr "שם ה-class של מודל פייתון" - -#: contrib/contenttypes/models.py:75 +msgstr "שם ה־class של מודל פייתון" + +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "סוגי תוכן" #: contrib/flatpages/admin.py:9 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף." +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף." #: contrib/flatpages/admin.py:11 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים, קווים תחתונים ונטויים בלבד." #: contrib/flatpages/admin.py:22 @@ -1670,8 +1705,12 @@ msgstr "שם תבנית" #: contrib/flatpages/models.py:12 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "דוגמא: 'flatpages/contact_page.html'. אם זה לא צויין, המערכת תשתמש ב-'flatpages/default.html'." +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"דוגמא: 'flatpages/contact_page.html'. אם לא צויין, המערכת תשתמש ב-'flatpages/" +"default.html'." #: contrib/flatpages/models.py:13 msgid "registration required" @@ -1689,9 +1728,44 @@ msgid "flat pages" msgstr "דפים פשוטים" -#: contrib/formtools/wizard.py:130 -msgid "We apologize, but your form has expired. Please continue filling out the form from this page." -msgstr "לצערנו פג תוקף הטופס שלך. עליך להמשיך למלא את הטופס מן העמוד הזה ואילך." +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"לצערנו פג תוקף הטופס שלך. עליך להמשיך למלא את הטופס מן העמוד הזה ואילך." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "שדה ה־GIS הבסיסי -- ממופה לטיפוס OpenGIS Specification Geometry." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "נקודה" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "מחרוזת קו" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "פוליגון" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "מרובה־נקודות" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "מחרוזת קו מרובת שורות" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "פוליגון מרובה" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "אוסף גיאומטרי" #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." @@ -1706,7 +1780,9 @@ msgstr "סוג גיאומטרי שגוי." #: contrib/gis/forms/fields.py:20 -msgid "An error occurred when transforming the geometry to the SRID of the geometry form field." +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." msgstr "הייתה בעיה עם השינוי של הצורה לסוג של השדה." #: contrib/humanize/templatetags/humanize.py:19 @@ -1794,27 +1870,25 @@ msgid "yesterday" msgstr "אתמול" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." -msgstr "יש להזין קוד דואר בתחביר NNNN או ANNNNAAA." - -#: contrib/localflavor/ar/forms.py:49 -#: contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 -#: contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +msgstr "יש להזין קוד דואר בתבנית NNNN או ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "יש להזין רק ספרות בשדה זה." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "שדה זה דורש 7 או 8 ספרות." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." -msgstr "יש להזין מספר CUIT חוקי בתחביר XX-XXXXXXXX-X או XXXXXXXXXXXX." - -#: contrib/localflavor/ar/forms.py:80 +msgstr "יש להזין מספר CUIT חוקי בתבנית XX-XXXXXXXX-X או XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT שגוי" @@ -1854,55 +1928,56 @@ msgid "Vienna" msgstr "וינה" -#: contrib/localflavor/at/forms.py:20 -#: contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." -msgstr "יש להזין מיקוד בתחביר XXXX." +msgstr "יש להזין מיקוד בתבנית XXXX." #: contrib/localflavor/at/forms.py:48 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." -msgstr "יש להזין מספר ביטוח לאומי אוסטרלי חוקי בתחביר XXXX XXXXXX." - -#: contrib/localflavor/au/forms.py:16 +msgstr "יש להזין מספר ביטוח לאומי אוסטרלי חוקי בתבנית XXXX XXXXXX." + +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "יש להזין קוד דואר בן 4 ספרות." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "יש להזין מיקוד בתחביר XXXXX-XXX." - -#: contrib/localflavor/br/forms.py:30 +msgstr "יש להזין מיקוד בתבנית XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "מספרי טלפון חייבים להיות בתחביר XX-XXXX-XXXX." - -#: contrib/localflavor/br/forms.py:58 -msgid "Select a valid brazilian state. That state is not one of the available states." +msgstr "מספרי טלפון חייבים להיות בתבנית XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." msgstr "נא לבחור מדינה ברזילאית חוקית. מדינה זו אינה אחת מהמדינות האפשריות." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "מספר CPF לא חוקי" -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "שדה זה דורש 11 או 14 ספרות לכל היותר." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "מספר CNPJ לא חוקי" -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "שדה זה דורש לפחות 14 ספרות." -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." -msgstr "יש להזין מיקוד בתחביר XXX XXX." - -#: contrib/localflavor/ca/forms.py:88 +msgstr "יש להזין מיקוד בתבנית XXX XXX." + +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "יש להזין מספר ביטוח לאומי קנדי חוקי בתחביר XXX-XXX-XXXX." +msgstr "יש להזין מספר ביטוח לאומי קנדי חוקי בתבנית XXX-XXX-XXXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1910,19 +1985,19 @@ #: contrib/localflavor/ch/ch_states.py:6 msgid "Appenzell Innerrhoden" -msgstr "אפנצל אינר-רודן" +msgstr "אפנצל אינר־רודן" #: contrib/localflavor/ch/ch_states.py:7 msgid "Appenzell Ausserrhoden" -msgstr "אפנצל אוסר-רודן" +msgstr "אפנצל אוסר־רודן" #: contrib/localflavor/ch/ch_states.py:8 msgid "Basel-Stadt" -msgstr "באזל-שטאדט" +msgstr "באזל־שטאדט" #: contrib/localflavor/ch/ch_states.py:9 msgid "Basel-Land" -msgstr "באזל-לנדשאפט" +msgstr "באזל־לנדשאפט" #: contrib/localflavor/ch/ch_states.py:10 msgid "Berne" @@ -2008,19 +2083,21 @@ msgid "Zurich" msgstr "ציריך" -#: contrib/localflavor/ch/forms.py:64 -msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." -msgstr "יש להזין מספר זיהוי או דרכון שוויצרי בתחביר X1234567<0 או 1234567890." - -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "יש להזין מספר זיהוי או דרכון שוויצרי בתבנית X1234567<0 או 1234567890." + +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "יש להזין RUT צ'יליאני חוקי." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "יש להזין RUT צ'יליאני חוקי. התחביר הוא XX.XXX.XXX-X." - -#: contrib/localflavor/cl/forms.py:31 +msgstr "יש להזין RUT צ'יליאני חוקי. התבנית היא XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "שדה RUT צ'יליאני אינו חוקי." @@ -2080,30 +2157,29 @@ msgid "Moravian-Silesian Region" msgstr "איזור מורביה – שלזיה" -#: contrib/localflavor/cz/forms.py:27 -#: contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "יש להזין קוד דואר בתחביר XXXXX או XXX XX." - -#: contrib/localflavor/cz/forms.py:47 +msgstr "יש להזין קוד דואר בתבנית XXXXX או XXX XX." + +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "הזן מספר לידה בתבנית XXXXXX/XXXX או XXXXXXXXXX." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "המשתנה שהזנת בשדה מין שגוי. הערכים החוקיים הם 'f' ו-'m'." - -#: contrib/localflavor/cz/forms.py:49 +msgstr "המשתנה שהזנת בשדה מין שגוי. הערכים החוקיים הם 'f' ו־'m'." + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "הזן מספר לידה חוקי." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "הזן מספר IC חוקי." #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" -msgstr "באדן-וירטמברג" +msgstr "באדן־וירטמברג" #: contrib/localflavor/de/de_states.py:6 msgid "Bavaria" @@ -2139,11 +2215,11 @@ #: contrib/localflavor/de/de_states.py:14 msgid "North Rhine-Westphalia" -msgstr "נורדריין-וסטפאליה" +msgstr "נורדריין־וסטפאליה" #: contrib/localflavor/de/de_states.py:15 msgid "Rhineland-Palatinate" -msgstr "ריינלנד-פאלץ" +msgstr "ריינלנד־פאלץ" #: contrib/localflavor/de/de_states.py:16 msgid "Saarland" @@ -2155,25 +2231,26 @@ #: contrib/localflavor/de/de_states.py:18 msgid "Saxony-Anhalt" -msgstr "סקסוניה-אנהלט" +msgstr "סקסוניה־אנהלט" #: contrib/localflavor/de/de_states.py:19 msgid "Schleswig-Holstein" -msgstr "שלזוויג-הולשטיין" +msgstr "שלזוויג־הולשטיין" #: contrib/localflavor/de/de_states.py:20 msgid "Thuringia" msgstr "תורינגיה" -#: contrib/localflavor/de/forms.py:14 -#: contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." -msgstr "יש להזין מיקוד בתחביר XXXXX." - -#: contrib/localflavor/de/forms.py:41 -msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." -msgstr "יש להזין מספר זיהוי גרמני חוקי בתחביר XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." +msgstr "יש להזין מיקוד בתבנית XXXXX." + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "יש להזין מספר זיהוי גרמני חוקי בתבנית XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" @@ -2442,73 +2519,510 @@ msgid "Valencian Community" msgstr "קהילת ולנסיה" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." -msgstr "נא להזיו מיקוד חוקי בתחום ובתחביר 01XXX - 52XXX." - -#: contrib/localflavor/es/forms.py:39 -msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." -msgstr "נא להזין מספר טלפון חוקי באחד מהתחבירים 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." - -#: contrib/localflavor/es/forms.py:66 -msgid "Please enter a valid NIF, NIE, or CIF." -msgstr "נא להזין NIF, NIE, או CIF חוקי." +msgstr "נא להזין מיקוד חוקי בתחום ובתבנית 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"נא להזין מספר טלפון חוקי באחת מהתבניות 6XXXXXXXX, 8XXXXXXXX או 9XXXXXXXX." #: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "נא להזין NIF, NIE, או CIF חוקי." + +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "נא להזין NIF או NIE חוקי." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "סיכום ביקורת שגוי עבור NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "סיכום ביקורת שגוי עבור NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "סיכום ביקורת שגוי עבור CIF." -#: contrib/localflavor/es/forms.py:142 -msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "נא להזין חשבון בנק חוקי בתחביר XXXX-XXXX-XX-XXXXXXXXXX." - #: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "נא להזין מספר חשבון בנק חוקי בתבנית XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "סיכום ביקורת שגוי עבור מספר חשבון בנק." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "יש להזין מספר ביטוח לאומי פיני חוקי." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "מספרי טלפון חייבים להיות בתבנית 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "יש להזין מיקוד חוקי." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "יש להזין מספר טלפון חוקי" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "יש להזין מספר רישוי רכב חוקי" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "הזן מספר NIK/KTP חוקי." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "באלי" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "בנטן" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "בנגולו" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "ג'וקיירטה" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "ג'קרטה" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "גורנטלו" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "ג'מבי" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "ג'אווה מערב" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "ג'אווה מרכז" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "ג'אווה מזרח" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "בורנאו מערב" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "בורנאו דרום" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "בורנאו מרכז" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "בורנאו מזרח" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "איי בנגקה בליטונג" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "איי ריאאו" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "למפונג" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "מאלוקו" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "מאלוקו צפון" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "נגרוא אסה דרוסלם" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "איי סונדה הקטנים - מערב" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "איי סונדה הקטנים - מזרח" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "פפוא" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "פפוא מערב" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "ריאאו" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "סולבסי מערב" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "סולבסי דרום" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "סולבסי מרכז" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "סולבסי דרום־מזרח" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "סולבסי צפון" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "סומטרה מערב" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "סומטרה דרום" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "סומטרה צפון" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "מאגלנג" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "סורקרטה - סולו" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "מדיון" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "קדירי" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "טפנולי" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "בנגה-מליטנג" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "קונסוליות" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "שגרירויות" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "בנדונג" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "סולאוסי צפון" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - טימור" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "איי סולבסי צפון" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - לומבוק" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "פאפו ופאפו מערב" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "סיירבון" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - סומבאווה" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - פלורס" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - סומבה" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "בוגור" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "פקלונגאן" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "סמרנג" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "פאטי" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "סורביה" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "מדורה" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "מאלאנג" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "ג'מבר" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "בניומס" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "ממשל פדרלי" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "בוג'ונגורו" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "פורקוורטה" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "סידוארג'ו" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "גארוט" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "אנטרים" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "ארמאה" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "קארלאו" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "קאוובן" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "קלייר" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "קורק" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "דרי" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "דונגאל" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "דאון" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "דבלין" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "פרמנה" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "גולוויי" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "קרי" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "קילדאר" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "קילקני" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "ליש" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "לייטרים" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "לימריק" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "לונגפורד" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "לאות'" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "מאיו" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "מית'" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "מונהאן" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "אופלי" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "רוסקומון" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "סלייגו" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "טיפררי" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "טיירון" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "ווטפורד" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "וסטמית'" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "וקספורד" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "ויקלו" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." -msgstr "יש להזין מיקוד בתחביר XXXXXXX." - -#: contrib/localflavor/is_/forms.py:17 -msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "יש להזין מספר זיהוי איסלנדי חוקי. התחביר הוא XXXXXX-XXXX." +msgstr "יש להזין מיקוד בתבנית XXXXXXX." #: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "יש להזין מספר זיהוי איסלנדי חוקי. התבנית היא XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "מספר הזיהוי האיסלנדי אינו חוקי" -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "יש להזין מיקוד חוקי." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "יש להזין מספר ביטוח לאומי חוקי." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." -msgstr "יש להזין מספר מעמ חוקי" +msgstr "יש להזין מספר מע\"מ חוקי" #: contrib/localflavor/jp/forms.py:16 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "יש להזין קוד דואר בתחביר XXXXXXX או XXX-XXXX." +msgstr "יש להזין קוד דואר בתבנית XXXXXXX או XXX-XXXX." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" @@ -2698,6 +3212,10 @@ msgid "Okinawa" msgstr "אוקינאווה" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "נא להזין מספר זיהוי כוויתי חוקי" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "אגואסקליינטס" @@ -2736,7 +3254,7 @@ #: contrib/localflavor/mx/mx_states.py:21 msgid "Durango" -msgstr "צ'יוואוה" +msgstr "דוראנגו" #: contrib/localflavor/mx/mx_states.py:22 msgid "Guerrero" @@ -2826,15 +3344,11 @@ msgid "Zacatecas" msgstr "זאקאטקס" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "יש להזין מיקוד חוקי." -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "יש להזין מספר טלפון חוקי" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "יש להזין מספר SoFi חוקי" @@ -2886,15 +3400,15 @@ msgid "Zuid-Holland" msgstr "דרום הולנד" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "יש להזין מספר ביטוח לאומי נורבגי חוקי." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "שדה זה דורש 8 ספרות." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "שדה זה דורש 11 ספרות." @@ -2904,11 +3418,12 @@ #: contrib/localflavor/pl/forms.py:39 msgid "Wrong checksum for the National Identification Number." -msgstr "סכום ביקורת שגוי עבודי מספר הזיהוי הלאומי" +msgstr "סכום ביקורת שגוי עבור מספר הזיהוי הלאומי" #: contrib/localflavor/pl/forms.py:71 -msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "נא להזין שדה מספר מס (NIP) בתחביר XXX-XXX-XX-XX או XX-XX-XXX-XXX." +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "נא להזין שדה מספר מס (NIP) בתבנית XXX-XXX-XX-XX או XX-XX-XXX-XXX." #: contrib/localflavor/pl/forms.py:72 msgid "Wrong checksum for the Tax Number (NIP)." @@ -2916,7 +3431,7 @@ #: contrib/localflavor/pl/forms.py:109 msgid "National Business Register Number (REGON) consists of 9 or 14 digits." -msgstr "סמפר רשומת בית עסק ארצי(REGON) מכיל או תשע או ארבע עשרה ספרות." +msgstr "מספר רשומת בית עסק ארצי(REGON) מכיל או תשע או ארבע עשרה ספרות." #: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -2924,7 +3439,7 @@ #: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." -msgstr "נא להזין מיקוד בתחביר XX-XXX." +msgstr "נא להזין מיקוד בתבנית XX-XXX." #: contrib/localflavor/pl/pl_voivodeships.py:8 msgid "Lower Silesia" @@ -2990,6 +3505,14 @@ msgid "West Pomerania" msgstr "מערב פומרניה" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "יש להזין מיקוד בתבנית XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "מספרי טלפון חייבים להכיל 9 ספרות, או להתחיל ב + או 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "יש להזין CIF חוקי." @@ -3000,15 +3523,115 @@ #: contrib/localflavor/ro/forms.py:141 msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" -msgstr "יש להזין מספר IBAN חוקי בתחביר ROXX-XXXX-XXXX-XXXX-XXXX-XXXX" +msgstr "יש להזין מספר IBAN חוקי בתבנית ROXX-XXXX-XXXX-XXXX-XXXX-XXXX" #: contrib/localflavor/ro/forms.py:171 msgid "Phone numbers must be in XXXX-XXXXXX format." -msgstr "תחביר מספרי טלפון חייב להיות XXXX-XXXXXX." +msgstr "מספרי טלפון חייבים להיות בתבנית XXXX-XXXXXX." #: contrib/localflavor/ro/forms.py:194 msgid "Enter a valid postal code in the format XXXXXX" -msgstr "נא להזין מיקוד חוקי בתחביר XXXXXX" +msgstr "נא להזין מיקוד חוקי בתבנית XXXXXX" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "הזן מספר ארגון שוודי חוקי." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "יש להזין מספר זיהוי אישי שוודי חוקי." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "מספרי שיתוף פעולה אינם מותרים בשימוש" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "נא להזין מיקוד שוודי בתבנית XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "סטוקהולם" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "וסטרבוטן" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "נורבוטן" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "אופסלה" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "סדרמאנלנד" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "אסטריֶטלנד" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "ינשפין" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "קרונוברג" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "קאלמאר" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "גוטלנד" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "בלשיניה" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "סקונה" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "הלנד" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "יטאלנד המערבית" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "ורמלנד" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "ארברו" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "וסטמנלנד" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "דלארנה" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "יבלבורג" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "וסטרנורלנד" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "ימטלנד" #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -3176,7 +3799,7 @@ #: contrib/localflavor/sk/sk_districts.py:49 msgid "Nove Zamky" -msgstr "נווי-זאמקי" +msgstr "נווי־זאמקי" #: contrib/localflavor/sk/sk_districts.py:50 msgid "Partizanske" @@ -3496,7 +4119,7 @@ #: contrib/localflavor/uk/uk_regions.py:45 msgid "Tyne and Wear" -msgstr "טיין ו-וויר" +msgstr "טיין ו־וויר" #: contrib/localflavor/uk/uk_regions.py:46 msgid "Warwickshire" @@ -3642,19 +4265,43 @@ msgid "Wales" msgstr "וויילס" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "יש להזין מיקוד חוקי בתחביר XXXXX או XXXXX-XXXX." - -#: contrib/localflavor/us/forms.py:54 +msgstr "יש להזין מיקוד חוקי בתבנית XXXXX או XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "מספרי טלפון חייבים להיות בתבנית XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "יש להזין מספר ביטוח לאומי אמריקאי בתחביר XXX-XX-XXXX." - -#: contrib/localflavor/za/forms.py:20 +msgstr "יש להזין מספר ביטוח לאומי אמריקאי בתבנית XXX-XX-XXXX." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "יש להזין מדינה או טריטרויה בארה\"ב" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "מדינה בארה\"ב (שתי אותיות גדולות)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "מספר טלפון" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "יש להזין מספר CI חוקי בתבנית X.XXX.XXX-X,XXXXXXX-X או XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "יש להזין מספר CI חוקי." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "נא להזין מספר זיהוי דרום אפריקאי חוקי" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "נא להזין מיקוד דרום אפריקאי חוקי" @@ -3672,7 +4319,7 @@ #: contrib/localflavor/za/za_provinces.py:7 msgid "KwaZulu-Natal" -msgstr "קווזולו-נטל" +msgstr "קווזולו־נאטאל" #: contrib/localflavor/za/za_provinces.py:8 msgid "Limpopo" @@ -3694,12 +4341,18 @@ msgid "Western Cape" msgstr "כף מערבי" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "הודעה 'עצלה'" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "הפניה מ" #: contrib/redirects/models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." msgstr "זה אמור להיות נתיב מלא, ללא שם המתחם. לדוגמא: '/‎/events/search'." #: contrib/redirects/models.py:9 @@ -3707,7 +4360,9 @@ msgstr "הפניה אל" #: contrib/redirects/models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." msgstr "יכול להיות נתיב מלא (כנ\"ל) או URL מלא המתחיל ב'http://'." #: contrib/redirects/models.py:13 @@ -3750,286 +4405,388 @@ msgid "sites" msgstr "אתרים" -#: db/models/fields/__init__.py:356 -#: db/models/fields/__init__.py:710 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "יש להזין ערך חוקי." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "יש להזין URL חוקי." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "ה־URL הזה נראה כקישור שבור." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "יש להזין ערך המכיל אותיות, ספרות, קווים תחתונים ומקפים בלבד." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "יש להזין כתובת IPv4 חוקית." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "יש להזין רק ספרות מופרדות בפסיקים." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "יש לוודא שערך זה הינו %(limit_value)s (כרגע %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "יש לוודא שערך זה פחות מ או שווה ל־%(limit_value)s ." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "יש לוודא שהערך גדול מ או שווה ל־%(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"יש לוודא שערך זה מכיל לפחות %(limit_value)d תווים (מכיל %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"יש לוודא שערך זה מכיל %(limit_value)d תווים לכל היותר (מכיל %(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s חייב להיות ייחודי ל%(lookup)s של ה־%(date_field)s" + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s·עם·%(field_label)s·זה קיימת כבר." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "ערך %r אינו אפשרות חוקית." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "שדה זה אינו יכול להיות ריק." + +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "שדה זה אינו יכול להיות ריק." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "שדה מסוג: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "מספר שלם" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 msgid "This value must be an integer." msgstr "ערך זה חייב להיות מספר שלם." -#: db/models/fields/__init__.py:388 +#: db/models/fields/__init__.py:490 msgid "This value must be either True or False." msgstr "ערך זה חייב להיות אמת או שקר." -#: db/models/fields/__init__.py:427 -msgid "This field cannot be null." -msgstr "שדה זה אינו יכול להכיל null." - -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "יש להזין רק ספרות מופרדות בפסיקים." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "בוליאני (אמת או שקר)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "מחרוזת (עד %(max_length)s תווים)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "מספרים שלמים מופרדים בפסיקים" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "תאריך (ללא שעה)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "יש להזין תאריך במבנה YYYY-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "תאריך שגוי: %s" -#: db/models/fields/__init__.py:547 -#: db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." -msgstr "נא להזין תאריך/שעה חוקיים בתחביר YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." - -#: db/models/fields/__init__.py:601 +msgstr "נא להזין תאריך\\שעה חוקיים בתבנית YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "תאריך (כולל שעה)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "ערך זה חייב להיות מספר עשרוני." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "מספר עשרוני" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "כתובת דוא\"ל" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "נתיב קובץ" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "על הערך הזה להיות ערך מספר עשרוני." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "מספר עשרוני" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "מספר שלם גדול (8 בתים)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "ערך זה חייב להיות כלום, אמת או שקר." -#: db/models/fields/__init__.py:849 -#: db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "בוליאני (אמת, שקר או כלום)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "טקסט" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "זמן" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." -msgstr "נא להזין זמן חוקי בתחביר HH:MM[:ss[.uuuuuu]]." - -#: db/models/fields/related.py:792 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "יש להחזיק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד." - -#: db/models/fields/related.py:870 +msgstr "נא להזין זמן חוקי בתבנית HH:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "טקסט XML" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "מודל %(model)s עם מפתח ראשי %(pk)r אינו קיים." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Foreign Key (הסוג נקבע לפי השדה המקושר)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "יחס של אחד לאחד" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "יחס של רבים לרבים" + +#: db/models/fields/related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"יש להחזיק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד." + +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "נא להזין מזהה %(self)s חוקי. הערך %(value)r אינו חוקי." msgstr[1] "נא להזין מזהי %(self)s חוקיים. הערכים %(value)r אינם חוקיים." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "יש להזין תוכן בשדה זה." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "יש להזין ערך חוקי." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "נא לוודא שערך זה מכיל %(max)d תווים לכל היותר (מכיל %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "נא לוודא שערך זה מכיל לפחות %(min)d תווים (מכיל %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "נא להזין מספר שלם." -#: forms/fields.py:167 -#: forms/fields.py:196 -#: forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "יש לוודא שערך זה פחות מ או שווה ל %s." - -#: forms/fields.py:168 -#: forms/fields.py:197 -#: forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "יש לוודא שהערך גדול מ או שווה ל %s." - -#: forms/fields.py:195 -#: forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "נא להזין מספר." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." -msgstr "נא לוודא שאין יותר מ-%s ספרות סה\"כ" - -#: forms/fields.py:228 +msgstr "נא לוודא שאין יותר מ־%s ספרות סה\"כ" + +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." -msgstr "נא לוודא שאין יותר מ-%s ספרות אחרי הנקודה" - -#: forms/fields.py:229 +msgstr "נא לוודא שאין יותר מ־%s ספרות אחרי הנקודה" + +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "נא לוודא שאין יותר מ-%s ספרות לפני הנקודה העשרונית" - -#: forms/fields.py:288 -#: forms/fields.py:863 +msgstr "נא לוודא שאין יותר מ־%s ספרות לפני הנקודה העשרונית" + +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "יש להזין תאריך חוקי." -#: forms/fields.py:322 -#: forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "יש להזין שעה חוקית." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "יש להזין תאריך ושעה חוקיים." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "לא נשלח שום קובץ" -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "הקובץ שנשלח ריק." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format -msgid "Ensure this filename has at most %(max)d characters (it has %(length)d)." -msgstr "על שם הקובץ להיות לא יותר מ %(max)d תווים (יש לו%(length)d)." - -#: forms/fields.py:483 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "על שם הקובץ להיות לא יותר מ־%(max)d תווים (יש לו%(length)d)." + +#: forms/fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." msgstr "נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה או מכיל תמונה מקולקלת." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "יש להזין URL חוקי." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "ה-URL הזה נראה כקישור שבור." - -#: forms/fields.py:625 -#: forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "יש לבחור אפשרות חוקית. %(value)s אינו בין האפשרויות הזמינות." -#: forms/fields.py:704 -#: forms/fields.py:765 -#: forms/models.py:962 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 msgid "Enter a list of values." msgstr "יש להזין רשימת ערכים" -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "יש להזין כתובת IPv4 חוקית." - -#: forms/fields.py:902 -msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "יש להזין ערך המכיל אותיות, ספרות, קווים תחתונים ומקפים בלבד." - -#: forms/formsets.py:271 -#: forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "מיון" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s חייב להיות ייחודי ל%(lookup)s של ה%(date_field)s" - -#: forms/models.py:381 -#: forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s·עם·%(field_label)s·זה קיימת כבר." - -#: forms/models.py:581 +#: forms/models.py:567 #, python-format msgid "Please correct the duplicate data for %(field)s." -msgstr "נא לתקן את הערכים כפולים ל%(field)s." - -#: forms/models.py:585 +msgstr "נא לתקן את הערכים הכפולים ל%(field)s." + +#: forms/models.py:571 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "נא לתקן את הערכים כפולים ל%(field)s, זה חייב להיות ייחודי." - -#: forms/models.py:591 +msgstr "נא לתקן את הערכים הכפולים ל%(field)s, שערכים בו חייבים להיות ייחודיים." + +#: forms/models.py:577 #, python-format -msgid "Please correct the duplicate data for %(field_name)s which must be unique for the %(lookup)s in %(date_field)s." -msgstr "נא לתקן את הערכים כפולים %(field_name)s, זה חייב להיות ייחודי ל%(lookup)s של %(date_field)s." - -#: forms/models.py:599 +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"נא לתקן את הערכים הכפולים %(field_name)s, שחייבים להיות ייחודיים ל%(lookup)s " +"של %(date_field)s." + +#: forms/models.py:585 msgid "Please correct the duplicate values below." -msgstr "נא לתקן את הערכים כפולים מתחת." - -#: forms/models.py:837 +msgstr "נא לתקן את הערכים הכפולים למטה." + +#: forms/models.py:860 msgid "The inline foreign key did not match the parent instance primary key." -msgstr "הרצופות מפתח זר לא תאם את האב מופע המפתח העיקרי." - -#: forms/models.py:892 +msgstr "המפתח הזר ה־inline לא התאים למפתח הראשי של האב." + +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s." - -#: forms/models.py:963 +msgstr "יש לבחור אפשרות חוקית; אפשרות זו אינה אחת מהזמינות." + +#: forms/models.py:1008 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "יש לבחור אפשרות חוקית. %s אינו בין האפשרויות הזמינות." -#: forms/models.py:965 +#: forms/models.py:1010 #, python-format msgid "\"%s\" is not a valid value for a primary key." -msgstr "\"%s\" איננו חוקי כמקש עיקרי." - -#: template/defaultfilters.py:767 +msgstr "\"%s\" איננו חוקי כמפתח ראשי." + +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "כן,לא,אולי" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" -msgstr[0] "%(size)d בית" +msgstr[0] "בית %(size)d " msgstr[1] "%(size)d בתים" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "אחר הצהריים" -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "בבוקר" -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "אחר הצהריים" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "בבוקר" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "חצות" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" -msgstr "צהריים" +msgstr "12 בצהריים" #: utils/dates.py:6 msgid "Monday" @@ -4095,28 +4852,23 @@ msgid "February" msgstr "פברואר" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "מרס" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "אפריל" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "מאי" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "יוני" -#: utils/dates.py:19 -#: utils/dates.py:31 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "יולי" @@ -4216,7 +4968,7 @@ msgid "Dec." msgstr "דצמ'" -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "או" @@ -4270,34 +5022,37 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "d.m.Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "d.m.‏Y H:i:s" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "H:i:s" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" -msgstr "d.m.Y" - -#: utils/translation/trans_real.py:418 +msgstr "m.Y" + +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" -msgstr "d.m.Y" - -#: views/generic/create_update.py:114 +msgstr "d.m" + +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." -msgstr "ה-%(verbose_name)s נוצר בהצלחה." - -#: views/generic/create_update.py:156 +msgstr "ה־%(verbose_name)s נוצר בהצלחה." + +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." -msgstr "ה-%(verbose_name)s עודכן בהצלחה." - -#: views/generic/create_update.py:198 +msgstr "ה־%(verbose_name)s עודכן בהצלחה." + +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." -msgstr "ה-%(verbose_name)s נמחק." - +msgstr "ה־%(verbose_name)s נמחק." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/he/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/he/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/he/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/he/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/he/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -1,51 +1,61 @@ # Hebrew translation of djangojs. # Copyright (C) 2006 THE djangojs'S COPYRIGHT HOLDER # This file is distributed under the same license as the djangojs package. +# +# # Meir Kriheli , 2006. -# -# +# Shai Berger , 2010. msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-05-06 13:08+0300\n" -"PO-Revision-Date: 2007-05-06 13:08+0300\n" -"Last-Translator: Meir Kriheli \n" -"Language-Team: Hebrew\n" +"POT-Creation-Date: 2010-05-01 20:22+0200\n" +"PO-Revision-Date: 2010-05-01 14:20-0500\n" +"Last-Translator: Alex \n" +"Language-Team: Django-i18n \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "%s זמינות" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "בחירת הכל" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "הוספה" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "הסרה" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "%s נבחרות" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "יש לסמן את ההרשאות המבוקשות וללחוץ על " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "איפוס הכל" +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "%(sel)s מ %(cnt)s נבחרות" +msgstr[1] "%(sel)s מ %(cnt)s נבחרות" + #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 msgid "" @@ -56,65 +66,65 @@ #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" -msgstr "ר ש ש ר ח ש ש" +msgstr "א ב ג ד ה ו ש" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "הצג" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "הסתר" #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "ראשון שני שלישי רביעי חמישי שישי שבת" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "הצג" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "הסתר" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "כעת" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "שעון" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "בחירת שעה" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "חצות" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6 בבוקר" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" -msgstr "צהריים" +msgstr "12 בצהריים" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "ביטול" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "היום" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "לוח שנה" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "אתמול" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "מחר" - diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/he/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/he/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/he/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j בF Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = 'j בF Y H:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j בF' +SHORT_DATE_FORMAT = 'd/m/Y' +SHORT_DATETIME_FORMAT = 'd/m/Y H:i:s' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hi/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hi/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/hi/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd-m-Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hr/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/hr/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hr/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/hr/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/hr/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -1,20 +1,17 @@ -# translation of django.po to Hrvatski jezik -# This file is distributed under the same license as the Django package. -# msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-08 18:09+0200\n" -"PO-Revision-Date: 2009-05-08 18:19+0200\n" -"Last-Translator: Aljosa Mohorovic \n" +"POT-Creation-Date: 2009-11-23 22:06+0100\n" +"PO-Revision-Date: 2009-11-10 15:27+0100\n" +"Last-Translator: Davor Lučić \n" "Language-Team: Hrvatski Jezik >\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " "n%100==4 ? 2 : 3);\n" -"X-Generator: Vim 7.2\n" +"X-Generator: Lokalize 1.0\n" #: conf/global_settings.py:44 msgid "Arabic" @@ -220,16 +217,16 @@ msgid "Traditional Chinese" msgstr "Tradicionalni kineski" -#: contrib/admin/actions.py:56 +#: contrib/admin/actions.py:60 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Uspješno izbrisano %(count)d %(items)s." -#: contrib/admin/actions.py:63 contrib/admin/options.py:1025 +#: contrib/admin/actions.py:67 contrib/admin/options.py:1033 msgid "Are you sure?" msgstr "Jeste li sigurni?" -#: contrib/admin/actions.py:81 +#: contrib/admin/actions.py:85 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Izbrišite odabrane %(verbose_name_plural)s" @@ -268,15 +265,15 @@ msgid "This year" msgstr "Ova godina" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 msgid "Yes" msgstr "Da" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 msgid "No" msgstr "Ne" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:435 msgid "Unknown" msgstr "Nepoznat pojam" @@ -312,86 +309,86 @@ msgid "log entries" msgstr "zapisi" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:134 contrib/admin/options.py:148 msgid "None" msgstr "Nijedan" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:521 #, python-format msgid "Changed %s." msgstr "Promijenjeno %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 +#: contrib/admin/options.py:521 contrib/admin/options.py:531 #: contrib/comments/templates/comments/preview.html:16 forms/models.py:384 +#: forms/models.py:596 msgid "and" msgstr "i" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:526 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Dodano %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:530 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Promijeni %(list)s za %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:535 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Izbrisani %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:539 msgid "No fields changed." msgstr "Nije bilo promjena polja." -#: contrib/admin/options.py:598 contrib/auth/admin.py:67 +#: contrib/admin/options.py:601 contrib/auth/admin.py:67 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" uspješno je dodano." -#: contrib/admin/options.py:602 contrib/admin/options.py:635 +#: contrib/admin/options.py:605 contrib/admin/options.py:638 #: contrib/auth/admin.py:75 msgid "You may edit it again below." msgstr "Možete ponovo urediti unos dolje." -#: contrib/admin/options.py:612 contrib/admin/options.py:645 +#: contrib/admin/options.py:615 contrib/admin/options.py:648 #, python-format msgid "You may add another %s below." msgstr "Možete dodati još jedan %s ispod." -#: contrib/admin/options.py:633 +#: contrib/admin/options.py:636 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" uspješno promijenjeno." -#: contrib/admin/options.py:641 +#: contrib/admin/options.py:644 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"%(name)s \"%(obj)s\" uspješno dodan. Možete ponovo urediti unos dolje." - -#: contrib/admin/options.py:772 +msgstr "%(name)s \"%(obj)s\" uspješno dodan. Možete ponovo urediti unos dolje." + +#: contrib/admin/options.py:777 #, python-format msgid "Add %s" msgstr "Novi unos (%s)" -#: contrib/admin/options.py:803 contrib/admin/options.py:1003 +#: contrib/admin/options.py:809 contrib/admin/options.py:1011 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Unos %(name)s sa primarnim ključem %(key)r ne postoji." -#: contrib/admin/options.py:860 +#: contrib/admin/options.py:866 #, python-format msgid "Change %s" msgstr "Promijeni %s" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:910 msgid "Database error" msgstr "Pogreška u bazi" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:946 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." @@ -400,17 +397,17 @@ msgstr[2] "%(count)s %(name)s uspješno promijenjeno." msgstr[3] "%(count)s %(name)s uspješno promijenjeno." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1026 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" uspješno izbrisan." -#: contrib/admin/options.py:1054 +#: contrib/admin/options.py:1063 #, python-format msgid "Change history: %s" msgstr "Promijeni povijest: %s" -#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 #: contrib/auth/forms.py:80 msgid "" "Please enter a correct username and password. Note that both fields are case-" @@ -419,11 +416,11 @@ "Molim unesite ispravno korisničko ime i lozinku. Uzmite u obzir da oba polja " "razlikuju velika/mala slova." -#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Molim prijavite se ponovo jer je vaš session istekao." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:299 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -431,27 +428,27 @@ "Izgleda da vaš browser nije podešen da prihvaća kolačiće (cookies). Molimo " "promijenite postavke, ponovno učitajte stranicu i pokušajte ponovo." -#: contrib/admin/sites.py:301 contrib/admin/sites.py:307 +#: contrib/admin/sites.py:315 contrib/admin/sites.py:321 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Korisnička imena ne mogu sadržavati '@' znak." -#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Vaša e-mail adresa nije vaše korisničko ime. Pokušajte sa '%s'" -#: contrib/admin/sites.py:360 +#: contrib/admin/sites.py:374 msgid "Site administration" msgstr "Administracija stranica" -#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:388 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Prijavi se" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:433 #, python-format msgid "%s administration" msgstr "%s administracija" @@ -466,27 +463,27 @@ msgid "One or more %(fieldname)s in %(name)s:" msgstr "Jedan ili više %(fieldname)s u %(name)s:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:72 msgid "Date:" msgstr "Datum:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:72 msgid "Time:" msgstr "Vrijeme:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:96 msgid "Currently:" msgstr "Trenutno:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:96 msgid "Change:" msgstr "Promijeni:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:125 msgid "Lookup" msgstr "Potraži" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:237 msgid "Add Another" msgstr "Unesi još" @@ -501,7 +498,7 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 +#: contrib/admin/templates/admin/base.html:54 #: contrib/admin/templates/admin/change_form.html:17 #: contrib/admin/templates/admin/change_list.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:6 @@ -554,18 +551,18 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Dobrodošli," -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentacija" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:40 #: contrib/admin/templates/admin/auth/user/change_password.html:14 #: contrib/admin/templates/admin/auth/user/change_password.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 @@ -573,7 +570,7 @@ msgid "Change password" msgstr "Promijeni lozinku" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 msgid "Log out" @@ -599,7 +596,7 @@ #: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Pogledaj na stranicama" @@ -669,9 +666,9 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" -"Jeste li sigurni da želite izbrisati %(object_name)s? Svi navedeni objekti i " +"Jeste li sigurni da želite izbrisati odabrane %(object_name)s? Svi navedeni objekti i " "povezani unosi biti će izbrisani:" #: contrib/admin/templates/admin/filter.html:2 @@ -734,14 +731,13 @@ msgstr "Korisnik" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Akcija" #: contrib/admin/templates/admin/object_history.html:30 #: utils/translation/trans_real.py:400 msgid "DATETIME_FORMAT" -msgstr "DATETIME_FORMAT" +msgstr "j. N Y. G:i T" #: contrib/admin/templates/admin/object_history.html:38 msgid "" @@ -755,6 +751,11 @@ msgid "Show all" msgstr "Prikaži sve" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Spremi" + #: contrib/admin/templates/admin/search_form.html:8 msgid "Search" msgstr "Traži" @@ -771,10 +772,6 @@ msgid "%(full_result_count)s total" msgstr "%(full_result_count)s ukupno" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Spremi" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Spremi kao novi unos" @@ -978,7 +975,7 @@ msgid "Reset my password" msgstr "Resetiraj moju lozinku" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:304 msgid "All dates" msgstr "Svi datumi" @@ -1000,144 +997,144 @@ msgid "template" msgstr "template" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "tag:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filter:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "prikaz:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Aplikacija %r nije pronađena" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Model %(model_name)r nije pronađen u aplikaciji %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "povezani `%(app_label)s.%(data_type)s` objekt" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "povezani `%(app_label)s.%(object_name)s` objekti" -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "svi %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "broj %s" -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Polja na %s objektima" -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 +#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 +#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 +#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 msgid "Integer" msgstr "Cijeli broj" -#: contrib/admindocs/views.py:316 +#: contrib/admindocs/views.py:335 msgid "Boolean (Either True or False)" msgstr "Boolean (True ili False)" -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 +#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 #, python-format msgid "String (up to %(max_length)s)" msgstr "Slova (do %(max_length)s)" -#: contrib/admindocs/views.py:318 +#: contrib/admindocs/views.py:337 msgid "Comma-separated integers" msgstr "Cijeli brojevi odvojeni zarezom" -#: contrib/admindocs/views.py:319 +#: contrib/admindocs/views.py:338 msgid "Date (without time)" msgstr "Datum (bez vremena/sati)" -#: contrib/admindocs/views.py:320 +#: contrib/admindocs/views.py:339 msgid "Date (with time)" msgstr "Datum (sa vremenom/satima)" -#: contrib/admindocs/views.py:321 +#: contrib/admindocs/views.py:340 msgid "Decimal number" msgstr "Decimalni broj" -#: contrib/admindocs/views.py:322 +#: contrib/admindocs/views.py:341 msgid "E-mail address" msgstr "E-mail adresa" -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 +#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 +#: contrib/admindocs/views.py:346 msgid "File path" msgstr "Put do datoteke" -#: contrib/admindocs/views.py:325 +#: contrib/admindocs/views.py:344 msgid "Floating point number" msgstr "Broj s pomičnim zarezom (floating point number)" -#: contrib/admindocs/views.py:329 contrib/comments/models.py:60 +#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 msgid "IP address" msgstr "IP adresa" -#: contrib/admindocs/views.py:331 +#: contrib/admindocs/views.py:350 msgid "Boolean (Either True, False or None)" msgstr "Boolean (True, False ili None)" -#: contrib/admindocs/views.py:332 +#: contrib/admindocs/views.py:351 msgid "Relation to parent model" msgstr "Relacija na roditeljski model (parent model)" -#: contrib/admindocs/views.py:333 +#: contrib/admindocs/views.py:352 msgid "Phone number" msgstr "Telefonski broj" -#: contrib/admindocs/views.py:338 +#: contrib/admindocs/views.py:357 msgid "Text" msgstr "Tekst" -#: contrib/admindocs/views.py:339 +#: contrib/admindocs/views.py:358 msgid "Time" msgstr "Vrijeme" -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 +#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 #: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admindocs/views.py:341 +#: contrib/admindocs/views.py:360 msgid "U.S. state (two uppercase letters)" msgstr "Država S.A.D.-a (dva velika slova)" -#: contrib/admindocs/views.py:342 +#: contrib/admindocs/views.py:361 msgid "XML text" msgstr "XML tekst" -#: contrib/admindocs/views.py:368 +#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "izgleda da %s nije urlpattern objekt" @@ -1429,22 +1426,55 @@ msgid "message" msgstr "poruka" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:60 msgid "Logged out" msgstr "Niste logirani" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Unesite ispravnu e-mail adresu." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Sadržaj" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadata" +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "oznaka" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "Označi ovaj komentar" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "odobreno" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "Odobri odabrane komentare" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "uklonjeno" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "Ukloni odabrane komentare" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1456,7 +1486,6 @@ msgstr "Najnoviji komentari na %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Ime" @@ -1465,7 +1494,6 @@ msgstr "E-mail adresa" #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Komentar" @@ -1594,7 +1622,6 @@ msgstr "Učini komentar javno dostupnim?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Odobri" @@ -1620,7 +1647,6 @@ msgstr "Stvarno ukloni ovaj komentar?" #: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 msgid "Remove" msgstr "Ukloni" @@ -1654,39 +1680,6 @@ msgid "Preview" msgstr "Prikaz" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Komentari koji zahtjevaju moderiranje" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Nema komentara koji zahtjevaju moderiranje" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Email" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Ovjeren (authenticated)?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP adresa" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Datum unosa" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "da" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "ne" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Hvala što ste komentirali" @@ -1783,7 +1776,7 @@ msgid "flat pages" msgstr "statične stranice" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:132 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1808,7 +1801,8 @@ "An error occurred when transforming the geometry to the SRID of the geometry " "form field." msgstr "" -"Došlo je do greške pri transformaciji geometrije na SRID geometrijskog polja forme." +"Došlo je do greške pri transformaciji geometrije na SRID geometrijskog polja " +"forme." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -2598,6 +2592,10 @@ msgid "Enter a valid Finnish social security number." msgstr "Unesite ispravan broj finskog socijalnog osiguranja." +#: contrib/localflavor/fr/forms.py:30 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonski brojevi moraju biti formata 0X XX XX XX XX." + #: contrib/localflavor/in_/forms.py:14 msgid "Enter a zip code in the format XXXXXXX." msgstr "Unesi ispravan zip kod formata XXXXXXX." @@ -3926,14 +3924,14 @@ msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Unesite ispravno vrijeme formata HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:792 +#: db/models/fields/related.py:869 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Držite \"Control\", ili \"Command\" na Mac-u, da bi odabrali više od jednog " "objekta." -#: db/models/fields/related.py:870 +#: db/models/fields/related.py:930 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3943,86 +3941,86 @@ msgstr[1] "" "Molim unesite ispravan %(self)s ID-eve. Vrijednosti %(value)r su neispravne." -#: forms/fields.py:54 +#: forms/fields.py:53 msgid "This field is required." msgstr "Unos za ovo polje je obavezan." -#: forms/fields.py:55 +#: forms/fields.py:54 msgid "Enter a valid value." msgstr "Unesite ispravnu vrijednost." -#: forms/fields.py:138 +#: forms/fields.py:137 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." msgstr "" "Osigurajte da ova vrijednost ima najviše %(max)d znakova (ima %(length)d)." -#: forms/fields.py:139 +#: forms/fields.py:138 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "" "Osigurajte da ova vrijednost ima najmanje %(min)d znakova (ima %(length)d)." -#: forms/fields.py:166 +#: forms/fields.py:165 msgid "Enter a whole number." msgstr "Unesite cijeli broj." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 +#: forms/fields.py:166 forms/fields.py:195 forms/fields.py:224 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Osigurajte da je ova vrijednost manja ili jednaka %s." -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 +#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Osigurajte da je ova vrijednost veća ili jednaka %s." -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:194 forms/fields.py:223 msgid "Enter a number." msgstr "Unesite broj." -#: forms/fields.py:227 +#: forms/fields.py:226 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Osigurajte da ukupno nema više od %s numeričkih znakova." -#: forms/fields.py:228 +#: forms/fields.py:227 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Osigurajte da ukupno nema više od %s decimalnih mjesta." -#: forms/fields.py:229 +#: forms/fields.py:228 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "" "Osigurajte da ukupno nema više od %s numeričkih znakova prije decimalne " "točke." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:287 forms/fields.py:862 msgid "Enter a valid date." msgstr "Unesite ispravan datum." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:321 forms/fields.py:863 msgid "Enter a valid time." msgstr "Unesite ispravno vrijeme." -#: forms/fields.py:361 +#: forms/fields.py:360 msgid "Enter a valid date/time." msgstr "Unesite ispravan datum/vrijeme." +#: forms/fields.py:446 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Datoteka nije poslana. Provjerite 'encoding type' forme." + #: forms/fields.py:447 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "Datoteka nije poslana. Provjerite 'encoding type' forme." - -#: forms/fields.py:448 msgid "No file was submitted." msgstr "Datoteka nije poslana." -#: forms/fields.py:449 +#: forms/fields.py:448 msgid "The submitted file is empty." msgstr "Poslana datoteka je prazna." -#: forms/fields.py:450 +#: forms/fields.py:449 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4030,7 +4028,7 @@ "Osigurajte da ova datoteka ima najviše %(max)d znakova (trenutno ima %" "(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:482 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4038,28 +4036,28 @@ "Upload-ajte ispravnu sliku. Datoteka koju ste upload-ali ili nije slika ili " "je oštečena." -#: forms/fields.py:544 +#: forms/fields.py:543 msgid "Enter a valid URL." msgstr "Unesite ispravan URL." -#: forms/fields.py:545 +#: forms/fields.py:544 msgid "This URL appears to be a broken link." msgstr "Izgleda da je URL neispravan." -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:624 forms/fields.py:702 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Odaberite iz ponuđenog. %(value)s nije ponuđen kao opcija." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:863 +#: forms/fields.py:703 forms/fields.py:764 forms/models.py:999 msgid "Enter a list of values." msgstr "Unesite listu vrijednosti." -#: forms/fields.py:892 +#: forms/fields.py:891 msgid "Enter a valid IPv4 address." msgstr "Unesite ispravnu IPv4 adresu." -#: forms/fields.py:902 +#: forms/fields.py:901 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" @@ -4073,27 +4071,49 @@ #: forms/models.py:363 #, python-format msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s mora biti jedinstven pojam za %(date_field)s %(lookup)s." +msgstr "" +"%(field_name)s mora biti jedinstven pojam za %(date_field)s %(lookup)s." #: forms/models.py:377 forms/models.py:385 #, python-format msgid "%(model_name)s with this %(field_label)s already exists." msgstr "%(model_name)s sa navedenim %(field_label)s već postoji." -#: forms/models.py:738 +#: forms/models.py:590 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Ispravite duplicirane podatke za %(field)s." + +#: forms/models.py:594 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:600 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:608 +msgid "Please correct the duplicate values below." +msgstr "Molimo ispravite duplicirane vrijednosti ispod." + +#: forms/models.py:863 msgid "The inline foreign key did not match the parent instance primary key." msgstr "The inline foreign key did not match the parent instance primary key." -#: forms/models.py:793 +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Izaberite ispravnu opciju. Ta opcija nije jedna od dostupnih opcija." -#: forms/models.py:864 +#: forms/models.py:1000 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Odaberite iz ponuđenog. %s nije ponuđen kao opcija." -#: forms/models.py:866 +#: forms/models.py:1002 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" nije ispravna vrijednost za primarni kluč." @@ -4124,27 +4144,27 @@ msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "popodne" -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "ujutro" -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "popodne" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "ujutro" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "ponoć" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" msgstr "podne" @@ -4384,19 +4404,19 @@ #: utils/translation/trans_real.py:399 msgid "DATE_FORMAT" -msgstr "DATE_FORMAT" +msgstr "j. N Y." #: utils/translation/trans_real.py:401 msgid "TIME_FORMAT" -msgstr "TIME_FORMAT" +msgstr "G:i" #: utils/translation/trans_real.py:417 msgid "YEAR_MONTH_FORMAT" -msgstr "YEAR_MONTH_FORMAT" +msgstr "F Y." #: utils/translation/trans_real.py:418 msgid "MONTH_DAY_FORMAT" -msgstr "MONTH_DAY_FORMAT" +msgstr "j. F" #: views/generic/create_update.py:114 #, python-format @@ -4412,406 +4432,3 @@ #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s je izbrisano." - -#~ msgid "Gaeilge" -#~ msgstr "Gaeilge" - -#~ msgid "Brazilian" -#~ msgstr "Brazilski" - -#~ msgid "Ordering" -#~ msgstr "Redoslijed" - -#~ msgid "DATE_WITH_TIME_FULL" -#~ msgstr "DATE_WITH_TIME_FULL" - -#~ msgid "Your new password is: %(new_password)s" -#~ msgstr "Vaša nova lozinka je: %(new_password)s" - -#~ msgid "Feel free to change this password by going to this page:" -#~ msgstr "Slobodno promijenite lozinku odlaskom na ovu stranicu:" - -#~ msgid "Added %s." -#~ msgstr "Dodano %s" - -#~ msgid "Deleted %s." -#~ msgstr "Izbrisano %s." - -#~ msgid "The two 'new password' fields didn't match." -#~ msgstr "Dva polja 'nova lozinka' nisu jednaka." - -#~ msgid "headline" -#~ msgstr "naslov" - -#~ msgid "rating #1" -#~ msgstr "ocjena #1" - -#~ msgid "rating #2" -#~ msgstr "ocjena #2" - -#~ msgid "rating #3" -#~ msgstr "ocjena #3" - -#~ msgid "rating #4" -#~ msgstr "ocjena #4" - -#~ msgid "rating #5" -#~ msgstr "ocjena #5" - -#~ msgid "rating #6" -#~ msgstr "ocjena #6" - -#~ msgid "rating #7" -#~ msgstr "ocjena #7" - -#~ msgid "rating #8" -#~ msgstr "ocjena #8" - -#~ msgid "is valid rating" -#~ msgstr "ocjena je ispravana" - -#~ msgid "Content object" -#~ msgstr "Objekt sadržaja" - -#~ msgid "person's name" -#~ msgstr "ime osobe" - -#~ msgid "ip address" -#~ msgstr "ip adresa" - -#~ msgid "approved by staff" -#~ msgstr "odobreno od strane osoblja" - -#~ msgid "free comments" -#~ msgstr "slobodni komentari" - -#~ msgid "score" -#~ msgstr "rezultat" - -#~ msgid "score date" -#~ msgstr "datum rezultata" - -#~ msgid "karma score" -#~ msgstr "karma rezultat" - -#~ msgid "karma scores" -#~ msgstr "karma rezultati" - -#~ msgid "%(score)d rating by %(user)s" -#~ msgstr "%(score)d ocjena po %(user)s" - -#~ msgid "" -#~ "This comment was flagged by %(user)s:\n" -#~ "\n" -#~ "%(text)s" -#~ msgstr "" -#~ "Ovaj komentar je označio %(user)s:\n" -#~ "\n" -#~ "%(text)s" - -#~ msgid "flag date" -#~ msgstr "označeno datuma" - -#~ msgid "user flag" -#~ msgstr "korisnička oznaka" - -#~ msgid "user flags" -#~ msgstr "korisničke oznake" - -#~ msgid "Flag by %r" -#~ msgstr "Oznaka po %r" - -#~ msgid "deletion date" -#~ msgstr "datum brisanja" - -#~ msgid "moderator deletion" -#~ msgstr "brisanje moderatora" - -#~ msgid "moderator deletions" -#~ msgstr "brisanja moderatora" - -#~ msgid "Moderator deletion by %r" -#~ msgstr "Brisanje moderatora po %r" - -#~ msgid "Forgotten your password?" -#~ msgstr "Zaboravili ste lozinku?" - -#~ msgid "Ratings" -#~ msgstr "Ocjene" - -#~ msgid "Required" -#~ msgstr "Obavezno" - -#~ msgid "Optional" -#~ msgstr "Izborno, nije obavezno" - -#~ msgid "Post a photo" -#~ msgstr "Pošalji sliku" - -#~ msgid "Your name:" -#~ msgstr "Vaše ime:" - -#~ msgid "" -#~ "This rating is required because you've entered at least one other rating." -#~ msgstr "Ova ocjena je obavezna jer ste bar jednom već ocjenjivali" - -#~ msgid "" -#~ "This comment was posted by a user who has posted fewer than %(count)s " -#~ "comment:\n" -#~ "\n" -#~ "%(text)s" -#~ msgid_plural "" -#~ "This comment was posted by a user who has posted fewer than %(count)s " -#~ "comments:\n" -#~ "\n" -#~ "%(text)s" -#~ msgstr[0] "" -#~ "Ovaj komentar je napisao korisnik koji je napisao manje od %(count)s " -#~ "komentara:\n" -#~ "\n" -#~ "%(text)s" -#~ msgstr[1] "" -#~ "Ovaj komentar je napisao korisnik koji je napisao manje od %(count)s " -#~ "komentara:\n" -#~ "\n" -#~ "%(text)s" - -#~ msgid "Only POSTs are allowed" -#~ msgstr "Samo POST dopušten." - -#~ msgid "One or more of the required fields wasn't submitted" -#~ msgstr "Jedno ili više obaveznih polja nisu poslana" - -#~ msgid "Somebody tampered with the comment form (security violation)" -#~ msgstr "Netko je mijenjao formu komentara (sigurnosni propust)" - -#~ msgid "" -#~ "The comment form had an invalid 'target' parameter -- the object ID was " -#~ "invalid" -#~ msgstr "" -#~ "Forma komentara ima nepravilni 'target' parametar -- ID objekta je bio " -#~ "nepravilan" - -#~ msgid "The comment form didn't provide either 'preview' or 'post'" -#~ msgstr "Forma komentara nije imala ni 'preview' ni 'post'" - -#~ msgid "Anonymous users cannot vote" -#~ msgstr "Anonimni korisnici ne mogu glasati" - -#~ msgid "No voting for yourself" -#~ msgstr "Ne možete glasati za sebe" - -#~ msgid "Uppercase letters are not allowed here." -#~ msgstr "Velika slova ovdje nisu dopuštena." - -#~ msgid "Lowercase letters are not allowed here." -#~ msgstr "Mala slova ovdje nisu dopuštena" - -#~ msgid "Enter valid e-mail addresses separated by commas." -#~ msgstr "Unesite ispravne e-mail adrese odvojene zarezom." - -#~ msgid "Please enter a valid IP address." -#~ msgstr "Unesite ispravnu IP adresu." - -#~ msgid "Empty values are not allowed here." -#~ msgstr "Prazne vrijednosti nisu dopuštene ovdje." - -#~ msgid "Non-numeric characters aren't allowed here." -#~ msgstr "Dozvoljeni su samo numerički znakovi." - -#~ msgid "This value can't be comprised solely of digits." -#~ msgstr "Ova vrijednost ne može sadržavati samo brojeve." - -#~ msgid "Only alphabetical characters are allowed here." -#~ msgstr "Dozvoljena su samo slova abecede." - -#~ msgid "Year must be 1900 or later." -#~ msgstr "Godina mora biti 1900 ili poslije." - -#~ msgid "The URL %s does not point to a valid image." -#~ msgstr "URL %s ne vodi na ispravnu sliku." - -#~ msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -#~ msgstr "" -#~ "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" nije " -#~ "ispravan format." - -#~ msgid "The URL %s does not point to a valid QuickTime video." -#~ msgstr "URL %s ne vodi na ispravan QuickTime video." - -#~ msgid "A valid URL is required." -#~ msgstr "Ispravan URL je obavezan." - -#~ msgid "" -#~ "Valid HTML is required. Specific errors are:\n" -#~ "%s" -#~ msgstr "Ispravan HTML je obavezan. Pogreške:
                    %s" - -#~ msgid "Badly formed XML: %s" -#~ msgstr "Loše formatiran XML: %s" - -#~ msgid "Invalid URL: %s" -#~ msgstr "Neispravan URL: %s" - -#~ msgid "The URL %s is a broken link." -#~ msgstr "URL %s je neispravan (broken) link." - -#~ msgid "Enter a valid U.S. state abbreviation." -#~ msgstr "Unesite ispravanu kraticu za državu S.A.D.-a." - -#~ msgid "This field must match the '%s' field." -#~ msgstr "Ovo polje mora biti jednako %s polju." - -#~ msgid "Please enter something for at least one field." -#~ msgstr "Molim unesite nešto bar za jedno polje." - -#~ msgid "Please enter both fields or leave them both empty." -#~ msgstr "" -#~ "Molim unesite vrijednosti za oba polja ili ostavite oba polja prazna." - -#~ msgid "This field must be given if %(field)s is not %(value)s" -#~ msgstr "Ovo polje je obavezno ako je %(field)s različito od %(value)s" - -#~ msgid "Duplicate values are not allowed." -#~ msgstr "Duplicirane vrijednosti nisu dopuštene." - -#~ msgid "This value must be between %(lower)s and %(upper)s." -#~ msgstr "Vrijednost mora biti između %(lower)s i %(upper)s." - -#~ msgid "This value must be no more than %s." -#~ msgstr "Vrijednost ne može biti veća od %s." - -#~ msgid "This value must be a power of %s." -#~ msgstr "Ova vrijednost mora biti %s na kvadrat." - -#~ msgid "Please enter a valid decimal number." -#~ msgstr "Molim unesite ispravan decimalni broj." - -#~ 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] "" -#~ "Molim unesite ispravan decimalni broj sa najviše %s numerička znaka." -#~ msgstr[1] "" -#~ "Molim unesite ispravan decimalni broj sa najviše %s numeričkih znakova." - -#~ msgid "" -#~ "Please enter a valid decimal number with a whole part of at most %s digit." -#~ msgid_plural "" -#~ "Please enter a valid decimal number with a whole part of at most %s " -#~ "digits." -#~ msgstr[0] "" -#~ "Molim unesite ispravan decimalni broj sa najviše %s numerička znaka u " -#~ "cijelom dijelu." -#~ msgstr[1] "" -#~ "Molim unesite ispravan decimalni broj sa najviše %s numeričkih znakova u " -#~ "cijelom dijelu." - -#~ 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] "" -#~ "Molim unesite ispravan decimalni broj sa najviše %s decimalna mjesta." -#~ msgstr[1] "" -#~ "Molim unesite ispravan decimalni broj sa najviše %s decimalnih mjesta." - -#~ msgid "Please enter a valid floating point number." -#~ msgstr "" -#~ "Molim unesite ispravan broj sa pomičnim zarezom (floating point number)." - -#~ msgid "Make sure your uploaded file is at least %s bytes big." -#~ msgstr "Provjerite je li Vaša upload-ana datoteka bar %s byte-ova velika." - -#~ msgid "Make sure your uploaded file is at most %s bytes big." -#~ msgstr "" -#~ "Provjerite je li Vaša upload-ana datoteka najviše %s byte-ova velika." - -#~ msgid "The format for this field is wrong." -#~ msgstr "Format za ovo polje je pogrešno." - -#~ msgid "This field is invalid." -#~ msgstr "Ovo polje je neispravno." - -#~ msgid "Could not retrieve anything from %s." -#~ msgstr "Ništa nije izvučeno iz %s." - -#~ msgid "" -#~ "The URL %(url)s returned the invalid Content-Type header '%(contenttype)" -#~ "s'." -#~ msgstr "" -#~ "URL %(url)s je vratio neispravan Content-Type header '%(contenttype)s'." - -#~ msgid "" -#~ "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts " -#~ "with \"%(start)s\".)" -#~ msgstr "" -#~ "Molim zatvorite %(tag)s na liniji %(line)s. (Linija počinje sa \"%(start)s" -#~ "\".)" - -#~ msgid "" -#~ "Some text starting on line %(line)s is not allowed in that context. (Line " -#~ "starts with \"%(start)s\".)" -#~ msgstr "" -#~ "Neki tekst koji počinje na liniji %(line)s nije dopušten u tom kontekstu. " -#~ "(Linija počinje sa \"%(start)s\".)" - -#~ msgid "" -#~ "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with " -#~ "\"%(start)s\".)" -#~ msgstr "" -#~ "\"%(attr)s\" na liniji %(line)s je neispravan atribut. (Linija počinje sa " -#~ "\"%(start)s\".)" - -#~ msgid "" -#~ "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -#~ "(start)s\".)" -#~ msgstr "" -#~ "\"<%(tag)s>\" na liniji %(line)s je neispravan tag. (Linija počinje sa \"%" -#~ "(start)s\".)" - -#~ msgid "" -#~ "A tag on line %(line)s is missing one or more required attributes. (Line " -#~ "starts with \"%(start)s\".)" -#~ msgstr "" -#~ "Tagu na liniji %(line)s nedostaje jedan ili više obaveznih atributa. " -#~ "(Linija počinje sa \"%(start)s\".)" - -#~ msgid "" -#~ "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -#~ "starts with \"%(start)s\".)" -#~ msgstr "" -#~ "\"%(attr)s\" atribut na liniji %(line)s ima neispravnu vrijednost. " -#~ "(Linija počinje sa \"%(start)s\".)" - -#~ msgid "" -#~ "%(object)s with this %(type)s already exists for the given %(field)s." -#~ msgstr "%(object)s sa %(type)s već postoji za navedeno %(field)s." - -#~ msgid "Enter a valid filename." -#~ msgstr "Unesite ime datoteke koja postoji." - -#~ msgid "Please enter a valid %s." -#~ msgstr "Molim unesite ispravan %s." - -#~ msgid "Separate multiple IDs with commas." -#~ msgstr "Odvojite više ID-a zarezom." - -#~ msgid "Ensure your text is less than %s character." -#~ msgid_plural "Ensure your text is less than %s characters." -#~ msgstr[0] "Osigurajte da tekst sadrži manje od %s znaka." -#~ msgstr[1] "Osigurajte da tekst sadrži manje od %s znakova." - -#~ msgid "Line breaks are not allowed here." -#~ msgstr "Novi redovi ovdje nisu dozvoljeni." - -#~ msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -#~ msgstr "Odaberite iz ponuđenog; '%(data)s' nije u %(choices)s." - -#~ msgid "Enter a whole number between -32,768 and 32,767." -#~ msgstr "Unesite cijeli broj između -32,768 i 32,767." - -#~ msgid "Enter a positive number." -#~ msgstr "Unesite pozitivan broj." - -#~ msgid "Enter a whole number between 0 and 32,767." -#~ msgstr "Unesite cijeli broj između 0 i 32,767." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hr/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hr/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/hr/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y.' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y.' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j.n.Y.' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hu/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/hu/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/hu/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'Y. F j.' +TIME_FORMAT = 'G:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'F j.' +SHORT_DATE_FORMAT = 'Y.m.d.' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/is/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/is/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/is/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j.n.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/it/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/it/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/it/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/it/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/it/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -6,230 +6,262 @@ msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-27 11:12+0200\n" -"PO-Revision-Date: 2009-07-27 11:10+0200\n" +"POT-Creation-Date: 2010-05-03 07:53+0200\n" +"PO-Revision-Date: 2010-05-03 08:23+0200\n" "Last-Translator: Nicola Larosa \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 0.3\n" +"X-Generator: KBabel 1.11.4\n" #: conf/global_settings.py:44 msgid "Arabic" msgstr "arabo" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "bengali" +msgid "Bulgarian" +msgstr "bulgaro" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "bulgaro" +msgid "Bengali" +msgstr "bengali" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "bosniaco" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "catalano" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "ceco" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "gallese" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Danish" msgstr "danese" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "German" msgstr "tedesco" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "greco" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "inglese" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "British English" +msgstr "inglese britannico" + +#: conf/global_settings.py:56 msgid "Spanish" msgstr "spagnolo" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "estone" - -#: conf/global_settings.py:56 -msgid "Argentinean Spanish" -msgstr "spagnolo argentino" - #: conf/global_settings.py:57 -msgid "Basque" -msgstr "basco" +msgid "Argentinean Spanish" +msgstr "spagnolo argentino" #: conf/global_settings.py:58 +msgid "Estonian" +msgstr "estone" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "basco" + +#: conf/global_settings.py:60 msgid "Persian" msgstr "persiano" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Finnish" msgstr "finlandese" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "French" msgstr "francese" -#: conf/global_settings.py:61 -msgid "Irish" -msgstr "irlandese" - -#: conf/global_settings.py:62 -msgid "Galician" -msgstr "galiziano" - #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "ungherese" +msgid "Frisian" +msgstr "frisio" #: conf/global_settings.py:64 -msgid "Hebrew" -msgstr "ebraico" +msgid "Irish" +msgstr "irlandese" #: conf/global_settings.py:65 -msgid "Hindi" -msgstr "hindi" +msgid "Galician" +msgstr "galiziano" #: conf/global_settings.py:66 -msgid "Croatian" -msgstr "croato" +msgid "Hebrew" +msgstr "ebraico" #: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "islandese" +msgid "Hindi" +msgstr "hindi" #: conf/global_settings.py:68 -msgid "Italian" -msgstr "italiano" +msgid "Croatian" +msgstr "croato" #: conf/global_settings.py:69 -msgid "Japanese" -msgstr "giapponese" +msgid "Hungarian" +msgstr "ungherese" #: conf/global_settings.py:70 -msgid "Georgian" -msgstr "georgiano" +msgid "Icelandic" +msgstr "islandese" #: conf/global_settings.py:71 -msgid "Korean" -msgstr "coreano" +msgid "Italian" +msgstr "italiano" #: conf/global_settings.py:72 +msgid "Japanese" +msgstr "giapponese" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "georgiano" + +#: conf/global_settings.py:74 msgid "Khmer" msgstr "khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Kannada" msgstr "kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "lettone" - -#: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "lituano" - #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "macedone" +msgid "Korean" +msgstr "coreano" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "olandese" +msgid "Lithuanian" +msgstr "lituano" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "norvegese" +msgid "Latvian" +msgstr "lettone" #: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "macedone" + +#: conf/global_settings.py:80 +msgid "Dutch" +msgstr "olandese" + +#: conf/global_settings.py:81 +msgid "Norwegian" +msgstr "norvegese" + +#: conf/global_settings.py:82 +msgid "Norwegian Bokmal" +msgstr "norvegese bokmal" + +#: conf/global_settings.py:83 +msgid "Norwegian Nynorsk" +msgstr "norvegese nynorsk" + +#: conf/global_settings.py:84 msgid "Polish" msgstr "polacco" -#: conf/global_settings.py:80 +#: conf/global_settings.py:85 msgid "Portuguese" msgstr "portoghese" -#: conf/global_settings.py:81 +#: conf/global_settings.py:86 msgid "Brazilian Portuguese" msgstr "brasiliano portoghese" -#: conf/global_settings.py:82 +#: conf/global_settings.py:87 msgid "Romanian" msgstr "rumeno" -#: conf/global_settings.py:83 +#: conf/global_settings.py:88 msgid "Russian" msgstr "russo" -#: conf/global_settings.py:84 -msgid "Slovak" -msgstr "slovacco" - -#: conf/global_settings.py:85 -msgid "Slovenian" -msgstr "sloveno" - -#: conf/global_settings.py:86 -msgid "Serbian" -msgstr "serbo" - -#: conf/global_settings.py:87 -msgid "Swedish" -msgstr "svedese" - -#: conf/global_settings.py:88 -msgid "Tamil" -msgstr "tamil" - #: conf/global_settings.py:89 -msgid "Telugu" -msgstr "telugu" +msgid "Slovak" +msgstr "slovacco" #: conf/global_settings.py:90 -msgid "Thai" -msgstr "tailandese" +msgid "Slovenian" +msgstr "sloveno" #: conf/global_settings.py:91 -msgid "Turkish" -msgstr "turco" +msgid "Albanian" +msgstr "albanese" #: conf/global_settings.py:92 +msgid "Serbian" +msgstr "serbo" + +#: conf/global_settings.py:93 +msgid "Serbian Latin" +msgstr "serbo latino" + +#: conf/global_settings.py:94 +msgid "Swedish" +msgstr "svedese" + +#: conf/global_settings.py:95 +msgid "Tamil" +msgstr "tamil" + +#: conf/global_settings.py:96 +msgid "Telugu" +msgstr "telugu" + +#: conf/global_settings.py:97 +msgid "Thai" +msgstr "tailandese" + +#: conf/global_settings.py:98 +msgid "Turkish" +msgstr "turco" + +#: conf/global_settings.py:99 msgid "Ukrainian" msgstr "ucraino" -#: conf/global_settings.py:93 +#: conf/global_settings.py:100 +msgid "Vietnamese" +msgstr "vietnamita" + +#: conf/global_settings.py:101 msgid "Simplified Chinese" msgstr "cinese semplificato" -#: conf/global_settings.py:94 +#: conf/global_settings.py:102 msgid "Traditional Chinese" msgstr "cinese tradizionale" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Cancellati/e con successo %(count)d %(items)s." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1129 msgid "Are you sure?" msgstr "Sei sicuro?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Cancella %(verbose_name_plural)s selezionati/e" @@ -268,19 +300,19 @@ msgid "This year" msgstr "Quest'anno" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Sì" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Sconosciuto" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Azione:" @@ -312,105 +344,128 @@ msgid "log entries" msgstr "voci di log" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "Nessuno" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "%s modificato/a." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 msgid "and" msgstr "e" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Aggiunto/a %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Cambiato/i %(list)s per %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Cancellato/a %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Nessun campo modificato." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" aggiunto/a correttamente." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "È possibile modificare nuovamente qui sotto." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Puoi aggiungere un altro/a %s qui sotto." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" modificato/a correttamente." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:690 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "" "%(name)s \"%(obj)s\" aggiunto/a correttamente. Puoi modificare ancora qui " "sotto." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:744 contrib/admin/options.py:1001 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Occorre selezionare degli oggetti per potervi eseguire azioni. Nessun " +"oggetto è stato cambiato." + +#: contrib/admin/options.py:763 +msgid "No action selected." +msgstr "Nessuna azione selezionata." + +#: contrib/admin/options.py:844 #, python-format msgid "Add %s" msgstr "Aggiungi %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:870 contrib/admin/options.py:1109 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "L'oggetto %(name)s con chiave primaria %(key)r non esiste." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:935 #, python-format msgid "Change %s" msgstr "Modifica %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:981 msgid "Database error" msgstr "Errore nel database" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1043 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s modificato/a correttamente." msgstr[1] "%(count)s %(name)s modificati/e correttamente." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1070 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s selezionati/e" +msgstr[1] "Nessuna azione selezionata." + +#: contrib/admin/options.py:1075 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 di %(cnt)s selezionati/e" + +#: contrib/admin/options.py:1122 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" cancellato/a correttamente." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1159 #, python-format msgid "Change history: %s" msgstr "Tracciato delle modifiche: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -418,11 +473,11 @@ "Inserisci nome utente e password corretti. In entrambi i campi le maiuscole " "sono significative." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Effettua di nuovo l'accesso, perché la tua sessione è scaduta." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -430,62 +485,52 @@ "Il browser non sembra configurato per accettare i cookie. Una volta " "abilitati, ricarica la pagina e riprova." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "I nomi utente non possono contenere il carattere '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Il nome utente non è costituito dall'indirizzo e-mail. Prova con '%s'." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Amministrazione sito" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Accedi" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Amministrazione %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Uno o più %(fieldname)s in %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Uno o più %(fieldname)s in %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Data:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Ora:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Attualmente:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Modifica:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Recupero" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Aggiungi un Altro" @@ -500,17 +545,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -537,8 +582,7 @@ "mail and should be fixed shortly. Thanks for your patience." msgstr "" "Si è verificato un errore. Gli amministratori del sito ne sono stati " -"informati" -"via e-mail e verrà corretto a breve. Grazie per la tua pazienza." +"informati via e-mail e verrà corretto a breve. Grazie per la tua pazienza." #: contrib/admin/templates/admin/actions.html:4 msgid "Run the selected action" @@ -548,34 +592,47 @@ msgid "Go" msgstr "Vai" +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Clicca qui per selezionare gli oggetti da tutte le pagine." + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Seleziona tutti/e %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Annulla la selezione" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Benvenuto/a," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentazione" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Cambia la password" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Esci" @@ -587,41 +644,42 @@ msgid "Django administration" msgstr "Amministrazione Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Aggiungi" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Storia" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Vedi sul sito" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Correggi l'errore qui sotto." msgstr[1] "Correggi gli errori qui sotto." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Aggiungi %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtro" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Cancella" @@ -669,10 +727,10 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" -"Sicuro di voler cancellare i %(object_name)s selezionati? Tutti i seguenti " -"oggetti, e i loro oggetti collegati, saranno cancellati:" +"Sicuro di voler cancellare gli oggetti %(object_name)s selezionati? Tutti i " +"seguenti oggetti, e i loro oggetti collegati, saranno cancellati:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -735,15 +793,9 @@ msgstr "Utente" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Azione" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j F Y, H:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -789,7 +841,7 @@ msgid "Save and continue editing" msgstr "Salva e continua le modifiche" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -797,33 +849,39 @@ "Inserisci innanzitutto nome utente e password. Potrai poi modificare le " "altre impostazioni dell'utente." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Nome utente" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Password" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Password (di nuovo)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Inserisci la stessa password inserita sopra, come verifica." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Inserisci una nuova password per l'utente %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Password" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Password (di nuovo)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Inserisci la stessa password inserita sopra, come verifica." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Aggiungi un/a altro/a %(verbose_name)s." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Elimina" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Cancellare?" @@ -837,9 +895,9 @@ msgstr "Accedi di nuovo" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Cambio password" @@ -852,7 +910,7 @@ msgid "Your password was changed." msgstr "La password è stata cambiata." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -860,21 +918,17 @@ "Inserisci la password attuale, per ragioni di sicurezza, e poi la nuova " "password due volte, per verificare di averla scritta correttamente." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Password attuale:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nuova password:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Conferma la password:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Password attuale" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nuova password" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Modifica la mia password" @@ -913,6 +967,14 @@ "Inserisci la nuova password due volte, per verificare di averla scritta " "correttamente." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nuova password:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Conferma la password:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Password non reimpostata" @@ -980,7 +1042,7 @@ msgid "Reset my password" msgstr "Reimposta la mia password" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Tutte le date" @@ -994,11 +1056,11 @@ msgid "Select %s to change" msgstr "Scegli %s da modificare" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "sito" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "modello" @@ -1058,89 +1120,7 @@ msgid "Fields on %s objects" msgstr "Campi sugli oggetti %s" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Intero" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Booleano (True o False)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Stringa (fino a %(max_length)s)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Interi separati da virgola" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Data (senza ora)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Data (con ora)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Numero decimale" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "Indirizzo e-mail" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Percorso di file" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Numero decimale" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "indirizzo IP" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Booleano (True, False o None)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Collegamento a modello padre" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Numero di telefono" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Testo" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Ora" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Stato USA (due lettere maiuscole)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "Testo XML" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s non sembra essere un oggetto urlpattern" @@ -1164,10 +1144,10 @@ "your computer is \"internal\").

                    \n" msgstr "" "\n" -"

                    Per installare i bookmarklet, trascina il link sulla barra " -"\n" -"dei bookmark, o clicca il link con il tasto destro e aggiungilo ai bookmark." -"\n" +"

                    Per installare i bookmarklet, trascina il link sulla " +"barra \n" +"dei bookmark, o clicca il link con il tasto destro e aggiungilo ai " +"bookmark.\n" "Potrai poi scegliere un bookmarklet in qualsiasi pagina del sito.\n" "Nota che alcuni di questi bookmarklet richiedono l'accesso al sito tramite " "un\n" @@ -1216,66 +1196,61 @@ msgid "As above, but opens the admin page in a new window." msgstr "Come sopra, ma apre la pagina di amministrazione in una nuova finestra." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Informazioni personali" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Permessi" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Date importanti" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Gruppi" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Aggiungi utente" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "La password è stata cambiata correttamente." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Cambia la password: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Obbligatorio. 30 caratteri o meno. Solo caratteri alfanumerici (lettere, " -"cifre e sottolineati)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Questo valore può contenere solo lettere, cifre e sottolineati." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Nome utente" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "Obbligatorio. 30 caratteri o meno. Solo lettere, cifre e @/./+/-/_ ." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Questo valore può contenere solo lettere, cifre e @/./+/-/_ ." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Conferma password" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Un utente con questo nome è già presente." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "I due campi password non corrispondono." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Questo account non è attivo." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1283,11 +1258,11 @@ "Il browser web sembra non avere i cookie abilitati. I cookie sono necessari " "per poter accedere." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-mail" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1295,73 +1270,68 @@ "Questo indirizzo email non è associato ad alcun account utente. Sei sicuro " "di esserti registrato?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Password reimpostata su %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nuova password" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Conferma nuova password" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Password attuale" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "" -"La password attuale non è stata inserita correttamente: va inserita di nuovo." - -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +msgstr "La password attuale non è stata inserita correttamente: va inserita di nuovo." + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nome" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "nome in codice" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "permesso" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "permessi" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "gruppo" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "gruppi" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "nome utente" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Obbligatorio. 30 caratteri o meno. Solo lettere, cifre e @/./+/-/_" + +#: contrib/auth/models.py:197 msgid "first name" msgstr "nome" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "cognome" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "indirizzo e-mail" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "password" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1369,19 +1339,19 @@ "Usa '[algo]$[salt]$[hexdigest]' oppure la maschera di " "cambio password." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "privilegi di staff" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Indica se l'utente può accedere a questo sito di amministrazione." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "attivo" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1389,11 +1359,11 @@ "Indica se l'utente debba essere considerato attivo. Deseleziona qui, " "piuttosto che cancellare gli account." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "privilegi di superutente" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1401,15 +1371,15 @@ "Indica che l'utente ha tutti i privilegi, senza che siano stati assegnati " "esplicitamente." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "ultimo accesso" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "iscritto in data" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1417,39 +1387,77 @@ "In aggiunta ai privilegi assegnati manualmente, l'utente riceverà anche " "tutti i privilegi assegnati ad ogni gruppo cui appartiene." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "privilegi utente" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "utente" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "utenti" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "messaggio" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Accesso annullato" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Inserisci un indirizzo e-mail valido." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Contenuto" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadati" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "segnalato" +msgstr[1] "segnalati/e" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Segnala i commenti selezionati" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "approvato" +msgstr[1] "approvati/e" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Approva i commenti selezionati" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "eliminato" +msgstr[1] "eliminati/e" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Elimina i commenti selezionati" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "Ad 1 commento è stata applicata con successo l'azione %(action)s." +msgstr[1] "A %(count)s commenti è stata applicata con successo l'azione %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1461,7 +1469,6 @@ msgstr "Commenti più recenti su %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nome" @@ -1469,23 +1476,27 @@ msgid "Email address" msgstr "Indirizzo email" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Commento" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "Modera i termini: la parola %s non è ammessa qui." msgstr[1] "Modera i termini: le parole %s non sono ammesse qui." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "If you enter anything in this field your comment will be treated as spam" msgstr "Se inserisci qualcosa in questo campo il tuo commento verrà considerato spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "content type" @@ -1514,6 +1525,10 @@ msgid "date/time submitted" msgstr "data/ora di inserimento" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "indirizzo IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "è pubblico" @@ -1594,7 +1609,6 @@ msgstr "Sicuro di voler pubblicare questo commento?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Approva" @@ -1618,11 +1632,6 @@ msgid "Really remove this comment?" msgstr "Sicuro di voler eliminare questo commento?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Elimina" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Grazie per aver eliminato" @@ -1653,39 +1662,6 @@ msgid "Preview" msgstr "Anteprima" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Coda di moderazione dei commenti" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Nessun commento da moderare" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Email" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Autenticato?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Indirizzo IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Pubblicato in data" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "sì" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "no" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Grazie per aver commentato" @@ -1713,11 +1689,11 @@ msgid "or make changes" msgstr "o fai dei cambiamenti" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "nome della classe del modello Python" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "content type" @@ -1781,7 +1757,7 @@ msgid "flat pages" msgstr "pagine statiche" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1789,6 +1765,38 @@ "Spiacenti, ma la tua form è scaduta. Puoi continuare a compilare la form da " "questa pagina." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "Il campo base GIS -- corrisponde al tipo Geometry delle specifiche OpenGIS." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Punto" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Stringa linea" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Poligono" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Multipunto" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Stringa multilinea" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Multi poligono" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Raccolta Geometry" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Nessun valore geometrico fornito." @@ -1894,25 +1902,25 @@ msgid "yesterday" msgstr "ieri" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Inserisci un codice postale nel formato NNNN o ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Questo campo può contenere solo numeri." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Questo campo richiede 7 o 8 cifre." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Inserisci un CUIT valido nel formato XX-XXXXXXXX-X o XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT non valido." @@ -1952,8 +1960,8 @@ msgid "Vienna" msgstr "Vienna" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Inserisci un codice postale nel formato XXXXX ." @@ -1963,19 +1971,19 @@ "Inserisci un Numero di Assistenza Sociale Austriaco valido, nel formato XXXX " "XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Inserisci un codice postale di 4 cifre." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Inserisci un codice postale nel formato XXXXX-XXX ." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "I numeri di telefono devono essere in formato XX-XXXX-XXXX ." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1983,27 +1991,27 @@ "Scegliere uno stato brasiliano valido. Questo stato non è uno di quelli " "disponibili." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Numero CPF non valido." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Questo campo richiede non più di 11 cifre, o 14 caratteri." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Numero CNPJ non valido." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Questo campo richiede almeno 14 cifre" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Inserisci un codice postale nel formato XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Inserisci un numero di assicurazione sociale canadese valido, nel formato " @@ -2113,7 +2121,7 @@ msgid "Zurich" msgstr "Zurigo" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2121,15 +2129,15 @@ "Inserisci un numero di carta d'identità o passaporto svizzeri validi, in " "formato X1234567<0 o 1234567890 ." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Inserisci un RUT cileno valido." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Inserisci un RUT cileno valido. Il formato è XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Il RUT cileno non è valido." @@ -2189,23 +2197,23 @@ msgid "Moravian-Silesian Region" msgstr "Regione della Moravia-Silesia" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Inserisci un codice postale nel formato XXXXX o XXX XX ." -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Inserisci un numero di nascita nel formato XXXXXX/XXXX o XXXXXXXXXX." - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Parametro opzionale 'Sesso' non valido, i valori validi sono 'f' ed 'm'" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Inserisci un numero di nascita nel formato XXXXXX/XXXX o XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Parametro opzionale 'Sesso' non valido, i valori validi sono 'f' ed 'm'" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Inserisci un numero di nascita valido." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Inserisci un numero di IC valido." @@ -2273,12 +2281,12 @@ msgid "Thuringia" msgstr "Turingia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Inserisci un codice postale nel formato XXXXX ." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2553,11 +2561,11 @@ msgid "Valencian Community" msgstr "Comunità di Valenza" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Inserisci un codice postale valido nell'intervallo e formato 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2565,63 +2573,495 @@ "Inserisci un numero telefonico valido in uno dei formati 6XXXXXXXX, " "8XXXXXXXX o 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Inserisci un NIF, NIE, o CIF valido." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Inserisci un NIF o NIE valido." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Checksum non valido per il NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Checksum non valido per il NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Checksum non valido per il CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Inserisci un numero di conto corrente bancario valido nel formato XXXX-XXXX-" "XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Checksum non valido per il numero di conto corrente bancario." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Inserisci un numero di assistenza sociale finlandese valido." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "I numeri di telefono devono essere in formato 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Inserisci un codice postale valido" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Inserisci un numero telefonico valido" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Inserisci una targa automobilistica valida" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Inserisci un numero NIK/KTP valido" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Giacarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi Barat" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corpi Consolari" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corpi Diplomatici" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Governo Federale" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublino" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Inserisci un codice postale nel formato XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Inserisci un numero di identificazione islandese valido. Il formato è XXXXXX-" "XXXX ." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Il numero di identificazione islandese non è valido." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Inserisci un codice postale valido." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Inserisci un numero di codice fiscale valido." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Inserisci una partita IVA valida." @@ -2817,6 +3257,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Inserisci un numero civile ID kuwaitiano valido" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2945,15 +3389,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Inserisci un codice postale valido" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Inserisci un numero telefonico valido" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Inserisci un numero SoFi valido" @@ -3005,15 +3445,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Inserisci un numero di assistenza sociale norvegese valido." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Questo campo richiede 8 cifre." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Questo campo richiede 11 cifre." @@ -3113,6 +3553,14 @@ msgid "West Pomerania" msgstr "Pomerania Ovest" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Inserisci un codice postale nel formato XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "I numeri di telefono devono avere 9 cifre, o iniziare con + o 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Inserisci un codice CIF valido." @@ -3133,6 +3581,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Inserisci un codice postale valido nel formato XXXXXX." +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Inserisci un numero di organizzazione svedese valido." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Inserisci un numero d'identità personale svedese valido." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "I numeri di coordinamento non sono ammessi." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Inserisci un codice postale svedese nel formato XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stoccolma" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banska Bystrica" @@ -3765,21 +4313,45 @@ msgid "Wales" msgstr "Galles" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Inserisci un codice postale nel formato XXXXX o XXXXX-XXXX ." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "I numeri di telefono devono essere in formato XXX-XXX-XXXX ." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" -"Inserisci un numero di assistenza sociale USA valido, nel formato " -"XXX-XX-XXXX ." - -#: contrib/localflavor/za/forms.py:20 +"Inserisci un numero di assistenza sociale USA valido, nel formato XXX-XX-" +"XXXX ." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Inserisci uno stato o territorio USA." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stato USA (due lettere maiuscole)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Numero di telefono" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Inserisci un numero CI valido nel formato X.XXX.XXX-X, XXXXXXX-X o XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Inserisci un numero CI valido." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Inserisci un numero ID sudafricano valido" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Inserisci un codice postale sudafricano valido" @@ -3819,6 +4391,10 @@ msgid "Western Cape" msgstr "Capo Ovest" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "messaggio lazy" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirezione da" @@ -3883,262 +4459,360 @@ msgid "sites" msgstr "siti" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Questo valore deve essere un intero." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Questo valore deve essere True o False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Inserisci un valore valido." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Inserisci una URL valida." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Questa URL non sembra funzionare." + +#: core/validators.py:123 forms/fields.py:873 +msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Inserisci uno 'slug' valido contenente lettere, cifre, sottolineati o " +"trattini." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Inserisci un indirizzo IPv4 valido." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Inserisci solo cifre separate da virgole." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Assicurarsi che questo valore sia %(limit_value)s (ora è %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Assicurarsi che questo valore sia minore o uguale a %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Assicurarsi che questo valore sia maggiore o uguale a %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Assicurarsi che questo valore contenga almeno %(limit_value)d caratteri (ne ha %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Assicurarsi che questo valore non contenga più di %(limit_value)d caratteri (ne ha %(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s deve essere unico per %(lookup)s %(date_field)s." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s con questo %(field_label)s esiste già." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Il valore %r non è una scelta valida." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Questo campo non può essere nullo." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Inserisci solo cifre separate da virgole." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Questo campo non può essere vuoto." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Campo di tipo: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Intero" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Questo valore deve essere un intero." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Questo valore deve essere True o False." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Booleano (True o False)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Stringa (fino a %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Interi separati da virgola" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Data (senza ora)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Inserisci una data valida in formato AAAA-MM-GG." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Data non valida: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Inserisci una data/ora valida nel formato AAAA-MM-GG OO:MM[ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Data (con ora)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Questo valore deve essere un numero decimale." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Numero decimale" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Indirizzo e-mail" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Percorso di file" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Questo valore deve essere un numero a virgola mobile." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Numero decimale" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Intero grande (8 byte)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Questo valore deve essere None, True o False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (True, False o None)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Testo" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Ora" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Inserisci un'ora valida nel formato OO:MM[ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "Testo XML" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Il modello %(model)s con chiave primaria %(pk)r non esiste." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Foreign Key (tipo determinato dal campo collegato)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "Relazione uno a uno" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Relazione molti a molti" + +#: db/models/fields/related.py:1000 msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Tieni premuto \"Control\", o \"Command\" su Mac, per selezionarne più di uno." - -#: db/models/fields/related.py:894 +msgstr "Tieni premuto \"Control\", o \"Command\" su Mac, per selezionarne più di uno." + +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "Inserisci un ID valido per %(self)s. Il valore %(value)r non è valido." msgstr[1] "Inserisci ID validi per %(self)s. I valori %(value)r non sono validi." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Questo campo è obbligatorio." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Inserisci un valore valido." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Assicurarsi che questo valore non contenga più di %(max)d caratteri (ne ha %" -"(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Assicurarsi che questo valore contenga almeno %(min)d caratteri (ne ha %" -"(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Inserisci un numero intero." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Assicurarsi che questo valore sia minore o uguale a %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Assicurarsi che questo valore sia maggiore o uguale a %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Inserisci un numero." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Assicurarsi che non vi siano più di %s cifre in totale." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Assicurarsi che non vi siano più di %s cifre decimali." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Assicurarsi che non vi siano più di %s cifre prima della virgola." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Inserisci una data valida." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Inserisci un'ora valida." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Inserisci una coppia data/ora valida." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Non è stato inviato alcun file. Verifica il tipo di codifica della form." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Nessun file è stato inviato." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Il file inviato è vuoto." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "" "Assicurarsi che questo nome di file non contenga più di %(max)d caratteri " "(ne ha %(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Carica un'immagine valida. Il file caricato non è un'immagine o è corrotto." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Inserisci una URL valida." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Questa URL non sembra funzionare." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Scegli un'opzione valida. '%(value)s non compare tra quelle disponibili." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 msgid "Enter a list of values." msgstr "Inserisci una lista di valori." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Inserisci un indirizzo IPv4 valido." - -#: forms/fields.py:902 -msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Inserisci uno 'slug' valido contenente lettere, cifre, sottolineati o " -"trattini." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Ordine" -#: forms/models.py:367 +#: forms/models.py:567 #, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s deve essere unico per %(lookup)s %(date_field)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s con questo %(field_label)s esiste già." - -#: forms/models.py:594, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Correggi i dati duplicati di %(field)s." -#: forms/models.py:598 +#: forms/models.py:571 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Correggi i dati duplicati di %(field)s, che deve essere unico." -#: forms/models.py:604 +#: forms/models.py:577 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -"Correggi i dati duplicati di %(field_name)s che deve essere unico/a per %(lookup)s " -"in %(date_field)s." - -#: forms/models.py:612 +"Correggi i dati duplicati di %(field_name)s che deve essere unico/a per %" +"(lookup)s in %(date_field)s." + +#: forms/models.py:585 msgid "Please correct the duplicate values below." msgstr "Correggi i dati duplicati qui sotto." -#: forms/models.py:867 +#: forms/models.py:860 msgid "The inline foreign key did not match the parent instance primary key." -msgstr "" -"La foreign key inline non concorda con la chiave primaria dell'istanza " -"padre." - -#: forms/models.py:930 +msgstr "La foreign key inline non concorda con la chiave primaria dell'istanza padre." + +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" "Scegli un'opzione valida. La scelta effettuata non compare tra quelle " "disponibili." -#: forms/models.py:1004 +#: forms/models.py:1008 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Scegli un'opzione valida. %s non compare tra quelle disponibili." -#: forms/models.py:1006 +#: forms/models.py:1010 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" non è un valore valido per una chiave primaria." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "sì,no,forse" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d byte" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4347,7 +5021,7 @@ msgid "Dec." msgstr "dic." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "o" @@ -4401,33 +5075,37 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "j F Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "j F Y, H:i" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" msgstr "Y F" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" msgstr "F j" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s creato/a correttamente." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s aggiornato/a correttamente." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s cancellato/a." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/it/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/it/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/it/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/it/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/it/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -6,15 +6,15 @@ msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-04-10 08:26+0200\n" -"PO-Revision-Date: 2009-07-26 17:51+0200\n" +"POT-Creation-Date: 2009-12-26 16:15+0100\n" +"PO-Revision-Date: 2009-12-26 16:50+0100\n" "Last-Translator: Nicola Larosa \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 0.3\n" +"X-Generator: KBabel 1.11.4\n" #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format @@ -31,7 +31,7 @@ #: contrib/admin/media/js/SelectFilter2.js:48 msgid "Remove" -msgstr "Rimuovi" +msgstr "Elimina" #: contrib/admin/media/js/SelectFilter2.js:53 #, perl-format @@ -59,6 +59,10 @@ msgid "S M T W T F S" msgstr "D L M M G V S" +#: contrib/admin/media/js/calendar.js:26 +msgid "FIRST_DAY_OF_WEEK" +msgstr "1" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "domenica lunedì martedì mercoledì giovedì venerdì sabato" @@ -118,4 +122,3 @@ #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" msgstr "Domani" - diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/it/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/it/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/it/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,41 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' # 25 Ottobre 2006 +TIME_FORMAT = 'H:i:s' # 14:30:59 +DATETIME_FORMAT = 'l d F Y H:i:s' # Mercoledì 25 Ottobre 2006 14:30:59 +YEAR_MONTH_FORMAT = 'F Y' # Ottobre 2006 +MONTH_DAY_FORMAT = 'j/F' # 10/2006 +SHORT_DATE_FORMAT = 'd/M/Y' # 25/12/2009 +SHORT_DATETIME_FORMAT = 'd/M/Y H:i:s' # 25/10/2009 14:30:59 +FIRST_DAY_OF_WEEK = 1 # Lunedì +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%Y/%m/%d', # '2008-10-25', '2008/10/25' + '%d-%m-%Y', '%d/%m/%Y', # '25-10-2006', '25/10/2006' + '%d-%m-%y', '%d/%m/%y', # '25-10-06', '25/10/06' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d-%m-%Y %H:%M:%S', # '25-10-2006 14:30:59' + '%d-%m-%Y %H:%M', # '25-10-2006 14:30' + '%d-%m-%Y', # '25-10-2006' + '%d-%m-%y %H:%M:%S', # '25-10-06 14:30:59' + '%d-%m-%y %H:%M', # '25-10-06 14:30' + '%d-%m-%y', # '25-10-06' + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' + '%d/%m/%y %H:%M', # '25/10/06 14:30' + '%d/%m/%y', # '25/10/06' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ja/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/ja/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ja/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/ja/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/ja/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -1282,7 +1282,7 @@ #: contrib/auth/forms.py:135 #, python-format msgid "Password reset on %s" -msgstr "%s にパスワードをリセット" +msgstr "%s のパスワードのリセット" #: contrib/auth/forms.py:143 msgid "New password" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ja/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ja/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ja/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'Y年n月j日' +TIME_FORMAT = 'G:i:s' +DATETIME_FORMAT = 'Y年n月j日G:i:s' +YEAR_MONTH_FORMAT = 'Y年n月' +MONTH_DAY_FORMAT = 'n月j日' +SHORT_DATE_FORMAT = 'Y/m/d' +SHORT_DATETIME_FORMAT = 'Y/m/d G:i:s' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ka/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ka/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ka/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,42 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'l, j F, Y' +TIME_FORMAT = 'h:i:s a' +DATETIME_FORMAT = 'j F, Y h:i:s a' +YEAR_MONTH_FORMAT = 'F, Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j.M.Y' +SHORT_DATETIME_FORMAT = 'j.M.Y H:i:s' +FIRST_DAY_OF_WEEK = 1 # (Monday) +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' + # '%d %b %Y', '%d %b, %Y', '%d %b. %Y', # '25 Oct 2006', '25 Oct, 2006', '25 Oct. 2006' + # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' + # '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%d.%m.%Y %H:%M', # '25.10.2006 14:30' + '%d.%m.%Y', # '25.10.2006' + '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59' + '%d.%m.%y %H:%M', # '25.10.06 14:30' + '%d.%m.%y', # '25.10.06' + '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59' + '%m/%d/%Y %H:%M', # '10/25/2006 14:30' + '%m/%d/%Y', # '10/25/2006' + '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59' + '%m/%d/%y %H:%M', # '10/25/06 14:30' + '%m/%d/%y', # '10/25/06' +) +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = " " +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/km/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/km/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/km/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j ខែ F ឆ្នាំ Y' +TIME_FORMAT = 'G:i:s' +DATETIME_FORMAT = 'j ខែ F ឆ្នាំ Y, G:i:s' +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +SHORT_DATETIME_FORMAT = 'j M Y, G:i:s' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/kn/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/kn/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/kn/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'h:i:s A' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ko/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ko/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ko/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,44 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'Y년 n월 j일' +TIME_FORMAT = 'A g:i:s' +DATETIME_FORMAT = 'Y년 n월 j일 g:i:s A' +YEAR_MONTH_FORMAT = 'Y년 F월' +MONTH_DAY_FORMAT = 'F월 j일' +SHORT_DATE_FORMAT = 'Y-n-j.' +SHORT_DATETIME_FORMAT = 'Y-n-j H:i' +# FIRST_DAY_OF_WEEK = +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' + # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' + '%Y년 %m월 %d일', # '2006년 10월 25일', with localized suffix. +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' + '%H시 %M분 %S초', # '14시 30분 59초' + '%H시 %M분', # '14시 30분' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59' + '%m/%d/%Y %H:%M', # '10/25/2006 14:30' + '%m/%d/%Y', # '10/25/2006' + '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59' + '%m/%d/%y %H:%M', # '10/25/06 14:30' + '%m/%d/%y', # '10/25/06' + + '%Y년 %m월 %d일 %H시 %M분 %S초', # '2006년 10월 25일 14시 30분 59초' + '%Y년 %m월 %d일 %H시 %M분', # '2006년 10월 25일 14시 30분' +) + +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/lt/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/lt/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/lt/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'Y \m. F j \d.' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +SHORT_DATE_FORMAT = 'Y.m.d' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/lv/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/lv/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/lv/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'Y. \g\a\d\a j. F' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = r'Y. \g. F' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = r'Y. \g\a\d\a j. M' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mk/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/mk/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mk/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/mk/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/mk/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-24 21:56+0200\n" -"PO-Revision-Date: 2008-09-03 11:20+0200\n" +"POT-Creation-Date: 2010-05-01 21:49+0200\n" +"PO-Revision-Date: 2010-04-05 15:53+0100\n" "Last-Translator: Vasil Vangelovski \n" "Language-Team: Macedonian \n" "MIME-Version: 1.0\n" @@ -18,215 +18,247 @@ msgstr "Арапски" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "Бенгалски" +msgid "Bulgarian" +msgstr "Бугарски" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Бугарски" +msgid "Bengali" +msgstr "Бенгалски" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "Босански" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "Каталански" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "Чешки" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "Велшки" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Danish" msgstr "Дански" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "German" msgstr "Германски" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Грчки" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Англиски" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "British English" +msgstr "Британскиот англиски" + +#: conf/global_settings.py:56 msgid "Spanish" msgstr "Шпански" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Естонски" - -#: conf/global_settings.py:56 -msgid "Argentinean Spanish" -msgstr "Аргентиско шпански" - #: conf/global_settings.py:57 -msgid "Basque" -msgstr "Баскиски" +msgid "Argentinean Spanish" +msgstr "Аргентиско шпански" #: conf/global_settings.py:58 +msgid "Estonian" +msgstr "Естонски" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "Баскиски" + +#: conf/global_settings.py:60 msgid "Persian" msgstr "Персиски" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Finnish" msgstr "Фински" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "French" msgstr "Француски" -#: conf/global_settings.py:61 -msgid "Irish" -msgstr "Ирски" - -#: conf/global_settings.py:62 -msgid "Galician" -msgstr "Галски" - #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Унгарски" +msgid "Frisian" +msgstr "Фризиски" #: conf/global_settings.py:64 -msgid "Hebrew" -msgstr "Еврејски" +msgid "Irish" +msgstr "Ирски" #: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Хинди" +msgid "Galician" +msgstr "Галски" #: conf/global_settings.py:66 -msgid "Croatian" -msgstr "Хрватски" +msgid "Hebrew" +msgstr "Еврејски" #: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Исландски" +msgid "Hindi" +msgstr "Хинди" #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Италијански" +msgid "Croatian" +msgstr "Хрватски" #: conf/global_settings.py:69 -msgid "Japanese" -msgstr "Јапонски" +msgid "Hungarian" +msgstr "Унгарски" #: conf/global_settings.py:70 -msgid "Georgian" -msgstr "Грузиски" +msgid "Icelandic" +msgstr "Исландски" #: conf/global_settings.py:71 -msgid "Korean" -msgstr "Корејски" +msgid "Italian" +msgstr "Италијански" #: conf/global_settings.py:72 +msgid "Japanese" +msgstr "Јапонски" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "Грузиски" + +#: conf/global_settings.py:74 msgid "Khmer" msgstr "Кмер" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Kannada" msgstr "Канада" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Латвиски" - -#: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "Литвански" - #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "Македонски" +msgid "Korean" +msgstr "Корејски" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "Холандски" +msgid "Lithuanian" +msgstr "Литвански" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Норвешки" +msgid "Latvian" +msgstr "Латвиски" #: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "Македонски" + +#: conf/global_settings.py:80 +msgid "Dutch" +msgstr "Холандски" + +#: conf/global_settings.py:81 +msgid "Norwegian" +msgstr "Норвешки" + +#: conf/global_settings.py:82 +msgid "Norwegian Bokmal" +msgstr "Норвешка bokmål" + +#: conf/global_settings.py:83 +msgid "Norwegian Nynorsk" +msgstr "Норвешки Нинорск" + +#: conf/global_settings.py:84 msgid "Polish" msgstr "Полски" -#: conf/global_settings.py:80 +#: conf/global_settings.py:85 msgid "Portuguese" msgstr "Португалкски" -#: conf/global_settings.py:81 +#: conf/global_settings.py:86 msgid "Brazilian Portuguese" msgstr "Бразилско португалски" -#: conf/global_settings.py:82 +#: conf/global_settings.py:87 msgid "Romanian" msgstr "Романски" -#: conf/global_settings.py:83 +#: conf/global_settings.py:88 msgid "Russian" msgstr "Руски" -#: conf/global_settings.py:84 -msgid "Slovak" -msgstr "Словачки" - -#: conf/global_settings.py:85 -msgid "Slovenian" -msgstr "Словенечки" - -#: conf/global_settings.py:86 -msgid "Serbian" -msgstr "Српски" - -#: conf/global_settings.py:87 -msgid "Swedish" -msgstr "Шведски" - -#: conf/global_settings.py:88 -msgid "Tamil" -msgstr "Тамил" - #: conf/global_settings.py:89 -msgid "Telugu" -msgstr "Телугу" +msgid "Slovak" +msgstr "Словачки" #: conf/global_settings.py:90 -msgid "Thai" -msgstr "Тајландски" +msgid "Slovenian" +msgstr "Словенечки" #: conf/global_settings.py:91 -msgid "Turkish" -msgstr "Турски" +msgid "Albanian" +msgstr "Албански" #: conf/global_settings.py:92 +msgid "Serbian" +msgstr "Српски" + +#: conf/global_settings.py:93 +msgid "Serbian Latin" +msgstr "Српски Латиница" + +#: conf/global_settings.py:94 +msgid "Swedish" +msgstr "Шведски" + +#: conf/global_settings.py:95 +msgid "Tamil" +msgstr "Тамил" + +#: conf/global_settings.py:96 +msgid "Telugu" +msgstr "Телугу" + +#: conf/global_settings.py:97 +msgid "Thai" +msgstr "Тајландски" + +#: conf/global_settings.py:98 +msgid "Turkish" +msgstr "Турски" + +#: conf/global_settings.py:99 msgid "Ukrainian" msgstr "Украински" -#: conf/global_settings.py:93 +#: conf/global_settings.py:100 +msgid "Vietnamese" +msgstr "Виетнамски" + +#: conf/global_settings.py:101 msgid "Simplified Chinese" msgstr "Упростен кинески" -#: conf/global_settings.py:94 +#: conf/global_settings.py:102 msgid "Traditional Chinese" msgstr "Традиционален кинески" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Успешно беа избришани %(count)d %(items)s." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 msgid "Are you sure?" msgstr "Сигурни сте?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Избриши ги избраните %(verbose_name_plural)s" @@ -265,19 +297,19 @@ msgid "This year" msgstr "Оваа година" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Да" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Не" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Непознато" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Акција:" @@ -309,61 +341,60 @@ msgid "log entries" msgstr "ставки во записникот" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "Ништо" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "Изменета %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 msgid "and" msgstr "и" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Додадено %(name)s „%(object)s“." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." -msgstr " Изменето %(list)s за %(name)s „%(object)s“." - -#: contrib/admin/options.py:533 +msgstr "Изменето %(list)s за %(name)s „%(object)s“." + +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Избришан %(name)s „%(object)s“." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Не беше изменето ниедно поле." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Ставката %(name)s \"%(obj)s\" беше успешно додадена." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "Подолу можете повторно да го уредите." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Подолу можете да додате уште еден %s." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" беше успешно изменета." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:690 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -371,44 +402,68 @@ "Ставката %(name)s \"%(obj)s\" беше успешно додадена. Подолу можете повторно " "да ја уредите." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Мора да се одберат предмети за да се изврши акција врз нив. Ниеден предмет " +"не беше променет." + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "Ниедна акција не е одбрана." + +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "Додади %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "објект %(name)s со примарен клуч %(key)r не постои." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" msgstr "Измени %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:978 msgid "Database error" msgstr "Грешка во базата на податоци" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1014 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s ставка %(name)s беше успешно изменета." msgstr[1] "%(count)s ставки %(name)s беа успешно изменети." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s одбран" +msgstr[1] "Сите %(total_count)s одбрани" + +#: contrib/admin/options.py:1046 +#, fuzzy, python-format +msgid "0 of %(cnt)s selected" +msgstr "од одбраниот %(count)d" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Ставаката %(name)s \"%(obj)s\" беше избришана успешно." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "Историја на измени: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -416,11 +471,11 @@ "Ве молам внесете точно корисничко име и лозинка. Имајте на ум дека и во " "двете полиња се битни големите и малите букви." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Ве молам најавете се повторно бидејќи вашата сесија е истечена." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -428,62 +483,52 @@ "Изгледа дека вашиот прелистувач не е конфигуриран да прифаќа колачиња. Ве " "молам овозможете ги колачињата, превчитајте ја страта и пробајте повторно." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Корисничките имиња неможе да го содржат „@“ знакот." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Вашата е-пошта не е вашето корисничко име. Пробајте со „%s“." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Администрација на сајт" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Најава" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "%s администрација" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Еден или повеќе %(fieldname)s во %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Еден или повеќе %(fieldname)s во %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Датум:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Време:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Моментално:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Измена:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Побарај" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Додади друго" @@ -498,17 +543,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -545,34 +590,47 @@ msgid "Go" msgstr "Оди" +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Кликнете тука за да изберете објекти низ повеќе страници" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Избери ги сите %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Откажи го изборот" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Добредојдовте," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Документација" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Промени лозинка" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Одјава" @@ -584,41 +642,42 @@ msgid "Django administration" msgstr "Џанго администрација" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Додади" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Историја" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Погледни на сајтот" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Ве молам поправете ја грешката подолу." msgstr[1] "Ве молам поправете ги грешките подолу." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Додади %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Филтер" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Избриши" @@ -652,23 +711,24 @@ msgstr "Избриши повеќе ставки" #: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format msgid "" "Deleting the %(object_name)s would result in deleting related objects, but " "your account doesn't have permission to delete the following types of " "objects:" msgstr "" -"Бришење на %(object_name)s би резултирало со бришење на " -"поврзаните објекти, но вие како корисник немате доволно привилегии да ги " -"бришете следните типови на објекти:" +"Бришење на %(object_name)s би резултирало со бришење на поврзаните објекти, " +"но вие како корисник немате доволно привилегии да ги бришете следните типови " +"на објекти:" #: contrib/admin/templates/admin/delete_selected_confirmation.html:22 #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" "Сигурне сте дека сакате да ги избришете избраните %(object_name)s? Сите овие " -"ставки и ставките поврзани со нив ќе бидат избришани:" +"објекти и објектите поврзани со нив ќе бидат избришани:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -731,15 +791,9 @@ msgstr "Корисник" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Акција" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j M Y, P" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -785,7 +839,7 @@ msgid "Save and continue editing" msgstr "Сними и продолжи со уредување" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -793,33 +847,39 @@ "Прво, внесете корисничко име и лозинка. Потоа ќе можете да уредувате повеќе " "кориснички опции." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Корисник" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Лозинка" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Лозинка (повторно)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Заради верификација внесете ја истата лозинка како и горе." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Внесете нова лозинка за корисникот %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Лозинка" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Лозинка (повторно)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Заради верификација внесете ја истата лозинка како и горе." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Додадете уште %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Отстрани" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Избриши?" @@ -834,9 +894,9 @@ msgstr "Најавете се повторно" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Измена на лозинка" @@ -849,7 +909,7 @@ msgid "Your password was changed." msgstr "Вашата лозинка беше сменета." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -857,21 +917,17 @@ "Заради сигурност ве молам внесете ја вашата стара лозинка и потоа внесете ја " "новата двапати за да може да се потврди дека правилно сте ја искуцале." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Стара лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Нова лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Потврди лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Стара лозинка" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Нова лозинка" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Промени ја мојата лозинка" @@ -910,6 +966,14 @@ "Ве молам внесете ја вашата нова лозинка двапати за да може да бидете сигурни " "дека правилно сте ја внеле." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Нова лозинка:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Потврди лозинка:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Неуспеа ресетирањето на лозинката" @@ -978,7 +1042,7 @@ msgid "Reset my password" msgstr "Ресетирај ја мојата лозинка" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Сите датуми" @@ -992,11 +1056,11 @@ msgid "Select %s to change" msgstr "Изберете %s за измена" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "сајт" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "шаблон" @@ -1056,89 +1120,7 @@ msgid "Fields on %s objects" msgstr "Полиња на %s објекти" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Цел број" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Логичка (или точно или неточно)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Збор (до %(max_length)s)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Целобројни вредности одделени со запирка" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Датум (без час)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Датум (со час)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Децимален број" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "Адреса на е-пошта" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Патека на датотека" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Децимален број" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "ИП адреса" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Логичка (точно,неточно или празно)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Релација со родителскиот модел" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Телефонски број" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Текст" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Час" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Држава во САД (две големи букви)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "XML текст" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s не изгледа дека е url објект" @@ -1213,66 +1195,62 @@ msgid "As above, but opens the admin page in a new window." msgstr "Како погоре, но ја отвара админ страницата во нов прозорец." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Лични информации" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Привилегии" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Важни датуми" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Групи" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Додади корисник" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Успешна промена на лозинката." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Промени лозинка: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Корисник" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" -"Дозволени се најмногу 30 знаци. Дозволени се само алфанумерички знаци " -"(букви, цифри и долна црта)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Оваа вредност смее да има само букви, бројки или долни црти." +"Задолжително. 30 или помалку знаци. Единствено букви, бројки и @/./+/-/_ ." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Оваа вредност смее да содржи само букви, бројки и @/./+/-/_ знаци." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Потврда на лозинка" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Веќе постои корисник со тоа корисничко име." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Двете полиња со лозинките не се совпаѓаат." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Оваа сметка е неактивна." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1280,11 +1258,11 @@ "Не изгледа дека вашиот прелистувач има овозможено колачиња. Колачињата се " "потребни за да се најавите." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Е-пошта" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1292,73 +1270,70 @@ "Нема регистрирано корисник со оваа адреса за е-пошта. Сигурни ли сте дека " "сте регистрирани?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Ресетирање на лозинка на %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Нова лозинка" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Потврда за нова лозинка" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Стара лозинка" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "Не ја внесовте точно вашата стара лозинка. Ве молам внесете ја повторно." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "име" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "кодно име" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "привилегија" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "привилегии" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "група" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "групи" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "корисничко име" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Задолжително. 30 или помалку знаци. Букви, бројки и @/./+/-/_ знаци" + +#: contrib/auth/models.py:197 msgid "first name" msgstr "име" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "презиме" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "е-пошта" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "лозинка" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1366,20 +1341,20 @@ "Користете '[algo]$[salt]$[hexdigest]' или користете ја формата за промена на лозинката." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "статус на администраторите" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "" "Означува дали корисникот може да се логира во сајтот за администрација." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "активен" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1387,11 +1362,11 @@ "Означува дали корисникот треба да биде активен. Одштиклирајте го ова наместо " "да бришете корисници." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "статус на суперкорисник" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1399,15 +1374,15 @@ "Означува дека овој корисник ги има сите привилегии без експлицитно да се " "доделуваат сите." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "последна најава" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "датум на зачленување" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1415,39 +1390,77 @@ "Како дополнување на рачно доделени привилегии, овој корисник ќе ги добие " "автоматски и сите привилегии за секоја група во која тој/таа членува." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "кориснички привилегии" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "корисник" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "корисници" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "порака" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Одјавен" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Внесeте правилна адреса за е-пошта." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Содржина" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Метаподатоци" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "обележан" +msgstr[1] "обележани" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Обележи го одбраните коментари" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "одобрен" +msgstr[1] "одобрени" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Одобри ги одбраните коментари" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "отстранет" +msgstr[1] "отстранети" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Отстрани ги избраните коментари" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 коментар беше успешно %(action)s." +msgstr[1] "%(count)s коментари беа успешно %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1459,7 +1472,6 @@ msgstr "Последни коментари за %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Име" @@ -1467,25 +1479,29 @@ msgid "Email address" msgstr "Е-пошта" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Коментар" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Ако внесете нешто во ова поле вашиот коментар ќе биде означен како спам" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "тип на содржина" @@ -1514,6 +1530,10 @@ msgid "date/time submitted" msgstr "датум/време пријавен" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "ИП адреса" + #: contrib/comments/models.py:61 msgid "is public" msgstr "е јавен" @@ -1596,7 +1616,6 @@ msgstr "Навистина ли сакате овој коментар да биде објавен?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Одобри" @@ -1621,11 +1640,6 @@ msgid "Really remove this comment?" msgstr "Навистина ли сакате да го отстраните овој коментар?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Отстрани" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Ви благодариме што отстранивте" @@ -1656,39 +1670,6 @@ msgid "Preview" msgstr "Преглед" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Редица за модерирање коментари" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Нема коменатари за модерирање" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Е-пошта" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Автентициран?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "ИП адреса" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Датум на објава" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "да" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "не" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Ви благодариме за коментарот" @@ -1716,11 +1697,11 @@ msgid "or make changes" msgstr "или направете измени" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "име на класата за python моделoт" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "типови содржини" @@ -1784,7 +1765,7 @@ msgid "flat pages" msgstr "статични страници" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1792,6 +1773,40 @@ "Се извинуваме но вашата форма истече. Ве молам продолжете пополнувајќи ја " "формата од оваа страница." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Базичното GIS поле -- соодветствува на геометриски тип од OpenGIS " +"спецификацијата." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Точка" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Линиска нишка" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Полигон" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Повеќе точки" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Повеќе-линиска нишка" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Повеќе полигони" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Колекција од геометриски објекти" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Не е внесена геометриска вредност." @@ -1897,25 +1912,25 @@ msgid "yesterday" msgstr "вчера" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Внесете поштенски број во форматот NNNN или ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Во ова поле смее да бидат само бројки." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Во ова поле смее да има 7 или 8 цифри." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Внесете правилен CUIT во XX-XXXXXXXX-X or XXXXXXXXXXXX формат." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Неправилен CUIT." @@ -1955,8 +1970,8 @@ msgid "Vienna" msgstr "Виена" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Внесете правилен поштенски број во форматот XXXX." @@ -1966,46 +1981,46 @@ "Внесете правилен број за социјално осигурување на Австрија во XXXX-XXXXXX " "формат." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Внесете 4 цифрен поштенски број." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Внесете правилен поштенски број во форматот XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Телефонските броеви мора да бидат во XX-XXXX-XXXX форматот." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." msgstr "" "Изберете правилна бразилска држава. Оваа држава не е од достапните држави." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Неправилен CPF број." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Во ова поле смее да има најмногу 11 цифри или 14 знаци." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Неправилен CNPJ број." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Во ова поле треба да има најмалку 14 цифри" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Внесете правилен поштенски број во формат XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "Внесте правилен канадски број за осигурување во XXX-XXX-XXX форматот." @@ -2113,7 +2128,7 @@ msgid "Zurich" msgstr "Цирих" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2121,15 +2136,15 @@ "Внесете правилен швајцарски број на пасош во X1234567<0 или 1234567890 " "формат." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Внесете правилeн RUT за Чиле." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Внесете правилен RUT за Чиле. Форматот е Xx.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "RUT бројот за Чиле е невалиден." @@ -2189,25 +2204,25 @@ msgid "Moravian-Silesian Region" msgstr "Моравско-Силесански регион" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Внесете поштенски број во форматот XXXXX или XXX XX." -#: contrib/localflavor/cz/forms.py:47 +#: contrib/localflavor/cz/forms.py:48 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "Внесете даночен број (NIP) во форматот XXXXXX/XXXX или XXXXXXXXXX." -#: contrib/localflavor/cz/forms.py:48 +#: contrib/localflavor/cz/forms.py:49 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" msgstr "" "Невалидна вредност за опционален параметар пол, валидни вредности се 'f' и " "'m'" -#: contrib/localflavor/cz/forms.py:49 +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Внесете правилен даночен број." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Внесете правилен даночен број." @@ -2275,12 +2290,12 @@ msgid "Thuringia" msgstr "Турингиа" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Внесете правилен поштенски број во формат XXXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2555,11 +2570,11 @@ msgid "Valencian Community" msgstr "Valencian Community" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Внесете поштенски број во опсег и формат 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2567,62 +2582,494 @@ "Внесете правилен телефонски број во еден од формативе 6XXXXXXXX, 8XXXXXXXX " "или 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Ве молам внесете правиелн NIF, NIE или CIF." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Ве молам внесете валиден NIF или NIE." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Неправилна контролна сума за NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Неправилна контролна сума за NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Неправилна контролна сум за CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "Внесете правилна банкарска сметка во формат XXXX-XXXX-XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Неправилна контролна сума за бројот на банкарската сметка." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Внесте правилен фински матичен број." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Телефонските броеви мора да бидат во 0X XX XX XX XX форматот." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Внесете правилен поштенски код" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Внесете валиден телефонски број" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Внесете валидна регистарска табличка." + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Внесете правилен NIK/KTP број." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Бали" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Бантен" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Бенгкулу" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Јогјакарта" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Џакарта" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Горонтало" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Џамби" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Јава Барат" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Јава Тенга" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Јава Тимур" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Калинмантан Барат" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Калимантан Селатан" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Калимантан Тенга" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Калимантан Тимур" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Кепулуан Банга-Белитунг" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Кепулуан Риау" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Лампунг" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Малуку" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Малуку Утара" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Нангоре Аце Дарусалам" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Нуса Тенгара Барат" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Нуса Тенгара Тимур" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Папуа" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Папуа Барат" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Риау" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Сулавеси Барат" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Сулавеси Селатан" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Сулавеси Тенга" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Сулавеси Тенгара" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Сулавеси Утара" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Суматера Барат" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Суматера Селатан" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Суматера Утара" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Магеланг" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Суракарта - Соло" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Мадиун" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Кедири" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Тапанули" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Кепулуан Банга Белитунг" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps Consulate" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Бандунг" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Сулавеси Утара Даратан" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Сулавеси Утара Кепулуан" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Папуа дан Папуа Барат" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Циребон" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Богор" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Пекалонган" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Семаранг" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Пати" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Сурабаја" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Мадура" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Маланг" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Џембер" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Банјумас" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Федерална Влада" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Бојонегоро" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Пурвакарта" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Сидоарџо" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Гарут" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Антрим" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Армаг" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Карлов" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Каван" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Кларе" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Корк" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Дери" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Донегал" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Даун" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Даблин" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Ферманаг" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Галвеј" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Кери" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Килдаре" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Килкени" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Лаоис" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Лајтрим" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Лимерик" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Лонгфорд" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Лут" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Мајо" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Мит" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Монаган" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Офали" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Росомон" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Слиго" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Типерари" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Тајрон" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Вотерфорд" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Вестмит" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Вексфорд" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Виклоу" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Внесете правилен поштенски број во форматот XXXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Внесете валиден идентификационен број од Исланд. Форматот е XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Исландскиот идентификационент број е невалиден." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Внесете правилен поштенски број." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Внесете правилен осигурителен број." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Внесете правилен даночен број." @@ -2818,6 +3265,10 @@ msgid "Okinawa" msgstr "Окинава" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Внесете правилен кувајтски број за идентификација" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2946,15 +3397,11 @@ msgid "Zacatecas" msgstr "Зацатекас" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Внесете правилен поштенски код" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Внесете валиден телефонски број" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Внесете валиден осигурителен број" @@ -3006,15 +3453,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Ве молам внесете правилен норвешки матичен број." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Во ова поле мора да се внесат 8 цифри." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Во ова поле се потребни 11 цифри." @@ -3114,6 +3561,15 @@ msgid "West Pomerania" msgstr "Западна Померанија" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Внесете поштенски број во форматот XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" +"Телефонските броеви мора да се со 9 цифри, или да почнуваат со + или 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Внесете правилен CIF." @@ -3134,6 +3590,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Внесете правилен поштенски код во формат XXXXXX" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Внесете број на шведска организација." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Внесте правилен шведски матичен број." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Координациски броеви не се дозволени." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Внесете правилен шведски поштенски број во формат XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Стокхолм" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Вестерботен" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Норботен" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Упсала" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Содерманланд" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Остерготланд" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Јонкопинг" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Кроненберг" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Калмар" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Готланд" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Блекинге" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Скане" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Халанд" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Вестра Готаланд" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Вермленд" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Оребро" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Вестменланд" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Даларна" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Гевлеборг" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Вестернорланд" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Јемтланд" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Банска Бистрица" @@ -3766,19 +4322,43 @@ msgid "Wales" msgstr "Велс" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Внесете поштенски број во форматот XXXXX или XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Телефонските броеви мора да бидат во XXX-XXX-XXXX форматот." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Внесте правилен матичен број за САД во XXX-XX-XXXX форматот." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Внесете држава или територија од САД." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Држава во САД (две големи букви)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Телефонски број" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Внесете правилен CI во X.XXX.XXX-X,XXXXXXX-X или XXXXXXXX формат." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Внесете правилен CI број." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Внесете правилен јужно афрички број за идентификација" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Внесете правилен јужно афрички поштенски код" @@ -3818,6 +4398,10 @@ msgid "Western Cape" msgstr "Western Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "мрзлива порака" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "пренасочи од" @@ -3882,59 +4466,224 @@ msgid "sites" msgstr "сајтови" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Оваа вредност мора да биде цел број." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Оваа вредност мора да биде или точно или неточно." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Внесете правилна вредност." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Внесете правилна адреса." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Оваа адреса изгледа дека не е достапна." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Внесете правилно кратко име (slug) кое се соддржи од букви, цифри, долна " +"црта или тире." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Внесeте правилна IPv4 адреса." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Внесете само цифри одделени со запирки." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Осигурајте се дека оваа вредност е %(limit_value)s (моментално е %" +"(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" +"Осигурајте се дека оваа вредност е помала или еднаква со %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" +"Осигурајте се дека оваа вредност е поголема или еднаква со %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Осигурајте се дека оваа вредност има најмалку %(limit_value)d знаци (има %" +"(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Осигурајте се дека оваа вредност има најмногу %(limit_value)d знаци (има %" +"(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s мора да биде уникатно за %(date_field)s %(lookup)s." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s со %(field_label)s веќе постои." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Вредноста %r не е валиден избор." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Оваа вредност неможе да биде null." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Внесете само цифри одделени со запирки." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Ова поле не може да биде празно" + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Поле од тип: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Цел број" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Оваа вредност мора да биде цел број." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Оваа вредност мора да биде или точно или неточно." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Логичка (или точно или неточно)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Збор (до %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Целобројни вредности одделени со запирка" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Датум (без час)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Внесете правилен датум во форматот ГГГГ-ММ-ДД." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Неправилен датум: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Внесете правилен датум/време во YYYY-MM-DD HH:MM[:ss[.uuuuuu]] формат." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Датум (со час)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Оваа вредност мора да биде децимален број." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Децимален број" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Адреса на е-пошта" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Патека на датотека" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Оваа вредност мора да биде број со подвижна запирка." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Децимален број" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Голем (8 бајти) цел број" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Оваа вредност мора да биде празна, точно или неточно." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Логичка (точно,неточно или празно)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Текст" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Час" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Внесете правилно време во HH:MM[:ss[.uuuuuu]] формат." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "XML текст" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Модел %(model)s со примарен клуч %(pk)r не постои." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Надворешен клуч (типот е одреден според сврзаното поле)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "Еден-према-еден релација" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Повеќе-према-повеќе релација" + +#: db/models/fields/related.py:1000 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Држете го „Control“, или „Command“ на Мекинтош, за да изберете повеќе од " "едно." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3946,84 +4695,58 @@ "Ве молам внесете правилен %(self)s идентификацион број. Вредностите %(value)" "r се неправилни." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Ова поле е задолжително." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Внесете правилна вредност." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Осигурајте се дека оваа вредност има најмногу %(max)d знаци (има %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Осигурајте се дека оваа вредност има најмалку %(min)d знаци (има %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Внеси цел број." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Осигурајте се дека оваа вредност е помала или еднаква со %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Осигурајте се дека оваа вредност е поголема или еднаква со %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Внесете број." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Осигурајте се дека вкупно нема повеќе од %s цифри." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Осигурајте се дека нема повеќе од %s децимални места." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Осигурајте се дека нема повеќе од %s цифри пред децималната запирка." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Внесете правилен датум." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Внесете правилно време." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Внесете правилен датум со време." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Не беше пратена датотека. Проверете го типот на енкодирање на формата." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Не беше пратена датотека." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Пратената датотека е празна." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4031,69 +4754,40 @@ "Осигурајте се дека ова име на датотека има најмногу %(max)d знаци (има %" "(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -"Качете валидна фотографија. Датотеката која ја качивте или не беше " -"фотографија или беше расипана датотеката." - -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Внесете правилна адреса." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Оваа адреса изгледа дека не е достапна." - -#: forms/fields.py:625 forms/fields.py:703 +"Качете валидна слика. Датотеката која ја качивте или не беше слика или беше " +"расипана датотеката." + +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Внесете валиден избор. %(value)s не е еден од можните избори." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 msgid "Enter a list of values." msgstr "Внесете листа на вредности." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Внесeте правилна IPv4 адреса." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Внесете правилно кратко име (slug) кое се соддржи од букви, цифри, долна " -"црта или тире." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Редослед" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s мора да биде уникатно за %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s со %(field_label)s веќе постои." - -#: forms/models.py:594 +#: forms/models.py:567 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Ве молам поправете ја дуплираната вредност за %(field)s." -#: forms/models.py:598 +#: forms/models.py:571 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" "Ве молам поправете ја дуплираната вредност за %(field)s, која мора да биде " "уникатна." -#: forms/models.py:604 +#: forms/models.py:577 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4102,52 +4796,52 @@ "Ве молам поправете ја дуплираната вредност за %(field_name)s која мора да " "биде уникатна за %(lookup)s во %(date_field)s." -#: forms/models.py:612 +#: forms/models.py:585 msgid "Please correct the duplicate values below." msgstr "Ве молам поправете ги дуплираните вредности подолу." -#: forms/models.py:867 +#: forms/models.py:860 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "Надворешниот клуч на вгезденото поле не се совпаѓа со примарниот клуч на " "родителската инстанца." -#: forms/models.py:930 +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Изберете правилно. Тоа не е еден од можните избори." -#: forms/models.py:1004 +#: forms/models.py:1008 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Внесете правилно. %s не е еден од достапните вредности." -#: forms/models.py:1006 +#: forms/models.py:1010 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" не е правилна вредност за примарен клуч." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "да, не, можеби" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d бајт" msgstr[1] "%(size)d бајти" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f КБ" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f МБ" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f ГБ" @@ -4356,7 +5050,7 @@ msgid "Dec." msgstr "дек." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "или" @@ -4410,33 +5104,37 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "j M Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "j M Y, P" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "P" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" msgstr "F j" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "Ставка %(verbose_name)s беше успешно создадена." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "Ставка %(verbose_name)s беше успешно ажурирана." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "Ставка %(verbose_name)s беше избришана." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mk/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/mk/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mk/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/mk/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/mk/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -5,47 +5,54 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-15 10:53+1100\n" -"PO-Revision-Date: 2007-02-24 13:49+0100\n" -"Last-Translator: Georgi Stanojevski \n" +"POT-Creation-Date: 2010-05-01 21:49+0200\n" +"PO-Revision-Date: 2010-04-05 15:44+0100\n" +"Last-Translator: Vasil Vangelovski \n" "Language-Team: Macedonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "Достапно %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Избери ги сите" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Додади" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Отстрани" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "Избрано %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Означете го вашиот избор/и и кликнете" -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Исчисти ги сите" +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 -#: contrib/admin/media/js/calendar.js:24 msgid "" "January February March April May June July August September October November " "December" @@ -53,67 +60,67 @@ "Јануари Февруари Март Април Мај Јуни Јули Август Септември Октомври Ноември " "Декември" -#: contrib/admin/media/js/dateparse.js:33 -msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "Недела Понеделник Вторник Среда Четврток Петок Сабота" - #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" msgstr "Н П В С Ч П С" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Прикажи" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Сокриј" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Недела Понеделник Вторник Среда Четврток Петок Сабота" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Сега" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Часовник" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Избери време" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Полноќ" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6 наутро" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Пладне" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Откажи" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Денеска" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Календар" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Вчера" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Утре" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Прикажи" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Скриј" - diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mk/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mk/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/mk/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +SHORT_DATE_FORMAT = 'd.n.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mn/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/mn/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mn/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/mn/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5243 @@ +# This file is distributed under the same license as the Django package. +# +# Urangua , 2010, 2002, 2010. +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-05-04 19:00+0800\n" +"PO-Revision-Date: 2010-03-11 17:23+0800\n" +"Last-Translator: Urangua \n" +"Language-Team: mn \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "Араб" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Болгар" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "Бенгал" + +#: conf/global_settings.py:47 +#, fuzzy +msgid "Bosnian" +msgstr "Эстони" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Каталан" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "Чех" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "Уэльс" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "Дани" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "Герман" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "Грек" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "Англи" + +#: conf/global_settings.py:55 +#, fuzzy +msgid "British English" +msgstr "Англи" + +#: conf/global_settings.py:56 +msgid "Spanish" +msgstr "Испани" + +#: conf/global_settings.py:57 +msgid "Argentinean Spanish" +msgstr "Аргентинийн Испани" + +#: conf/global_settings.py:58 +msgid "Estonian" +msgstr "Эстони" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "Баск" + +#: conf/global_settings.py:60 +msgid "Persian" +msgstr "Перс" + +#: conf/global_settings.py:61 +msgid "Finnish" +msgstr "Финлянд" + +#: conf/global_settings.py:62 +msgid "French" +msgstr "Франц" + +#: conf/global_settings.py:63 +#, fuzzy +msgid "Frisian" +msgstr "Фраисланд" + +#: conf/global_settings.py:64 +msgid "Irish" +msgstr "Ирланд" + +#: conf/global_settings.py:65 +msgid "Galician" +msgstr "Галици" + +#: conf/global_settings.py:66 +msgid "Hebrew" +msgstr "Еврэй" + +#: conf/global_settings.py:67 +#, fuzzy +msgid "Hindi" +msgstr "Хайланд" + +#: conf/global_settings.py:68 +msgid "Croatian" +msgstr "Хорват" + +#: conf/global_settings.py:69 +msgid "Hungarian" +msgstr "Унгар" + +#: conf/global_settings.py:70 +msgid "Icelandic" +msgstr "Исланд" + +#: conf/global_settings.py:71 +msgid "Italian" +msgstr "Итали" + +#: conf/global_settings.py:72 +msgid "Japanese" +msgstr "Япон" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "Гүрж" + +#: conf/global_settings.py:74 +msgid "Khmer" +msgstr "Кхмер" + +#: conf/global_settings.py:75 +msgid "Kannada" +msgstr "Каннада" + +#: conf/global_settings.py:76 +msgid "Korean" +msgstr "Солонгос" + +#: conf/global_settings.py:77 +msgid "Lithuanian" +msgstr "Литва" + +#: conf/global_settings.py:78 +msgid "Latvian" +msgstr "Латви" + +#: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "Македон" + +#: conf/global_settings.py:80 +#, fuzzy +msgid "Mongolian" +msgstr "Македон" + +#: conf/global_settings.py:81 +msgid "Dutch" +msgstr "Голланд" + +#: conf/global_settings.py:82 +msgid "Norwegian" +msgstr "Норвеги" + +#: conf/global_settings.py:83 +#, fuzzy +msgid "Norwegian Bokmal" +msgstr "Норвеги" + +#: conf/global_settings.py:84 +#, fuzzy +msgid "Norwegian Nynorsk" +msgstr "Норвеги" + +#: conf/global_settings.py:85 +msgid "Polish" +msgstr "Польш" + +#: conf/global_settings.py:86 +#, fuzzy +msgid "Portuguese" +msgstr "Португали" + +#: conf/global_settings.py:87 +msgid "Brazilian Portuguese" +msgstr "Бразилийн Португали" + +#: conf/global_settings.py:88 +msgid "Romanian" +msgstr "Румын" + +#: conf/global_settings.py:89 +msgid "Russian" +msgstr "Орос" + +#: conf/global_settings.py:90 +msgid "Slovak" +msgstr "Словак" + +#: conf/global_settings.py:91 +msgid "Slovenian" +msgstr "Словен" + +#: conf/global_settings.py:92 +#, fuzzy +msgid "Albanian" +msgstr "Алакант" + +#: conf/global_settings.py:93 +msgid "Serbian" +msgstr "Серби" + +#: conf/global_settings.py:94 +#, fuzzy +msgid "Serbian Latin" +msgstr "Серби" + +#: conf/global_settings.py:95 +msgid "Swedish" +msgstr "Щвед" + +#: conf/global_settings.py:96 +msgid "Tamil" +msgstr "Тамил" + +#: conf/global_settings.py:97 +msgid "Telugu" +msgstr "Тэлүгү" + +#: conf/global_settings.py:98 +#, fuzzy +msgid "Thai" +msgstr "Тамил" + +#: conf/global_settings.py:99 +msgid "Turkish" +msgstr "Турк" + +#: conf/global_settings.py:100 +msgid "Ukrainian" +msgstr "Украйн" + +#: conf/global_settings.py:101 +#, fuzzy +msgid "Vietnamese" +msgstr "Венн" + +#: conf/global_settings.py:102 +msgid "Simplified Chinese" +msgstr "Хятад (хялбаршуулсан) " + +#: conf/global_settings.py:103 +msgid "Traditional Chinese" +msgstr "Хятад (уламжлалт)" + +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "" + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1129 +msgid "Are you sure?" +msgstr "Итгэлтэй байна уу?" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

                    By %s:

                    \n" +"
                      \n" +msgstr "" +"

                      -аар %s:

                      \n" +"
                        \n" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "Бүх " + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "Өдөр харгалзахгүй" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "Өнөөдөр" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "Өнгөрсөн долоо хоног" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "Энэ сар" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "Энэ жил" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "Yes" +msgstr "Тийм" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "No" +msgstr "Үгүй" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 +msgid "Unknown" +msgstr "Тодорхойгүй" + +#: contrib/admin/helpers.py:20 +#, fuzzy +msgid "Action:" +msgstr "Үйлдэл" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "үйлдлийн хугацаа" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "" + +#: contrib/admin/options.py:142 contrib/admin/options.py:157 +msgid "None" +msgstr "" + +#: contrib/admin/options.py:563 +#, python-format +msgid "Changed %s." +msgstr "Өөрчлөгдсөн %s." + +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 +msgid "and" +msgstr "ба" + +#: contrib/admin/options.py:568 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "Нэмэгдсэн %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:572 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "%(name)s \"%(object)s\"-ийн өөрчлөгдсөн %(list)s" + +#: contrib/admin/options.py:577 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "Устгасан %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:581 +msgid "No fields changed." +msgstr "Өөрчилсөн зүйл байхгүй байна." + +#: contrib/admin/options.py:647 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr " %(name)s \"%(obj)s\" амжилттай нэмэгдлээ." + +#: contrib/admin/options.py:651 contrib/admin/options.py:684 +msgid "You may edit it again below." +msgstr "Доорх хэсэгт үүнийг ахин засварлах боломжтой." + +#: contrib/admin/options.py:661 contrib/admin/options.py:694 +#, python-format +msgid "You may add another %s below." +msgstr "Доорх хэсэгт өөр %s нэмэх боломжтой." + +#: contrib/admin/options.py:682 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr " %(name)s \"%(obj)s\" амжилттай өөрчлөгдлөө. " + +#: contrib/admin/options.py:690 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" амжилттай нэмэгдлээ. Доорх хэсэгт үүнийг ахин засварлах " +"боломжтой." + +#: contrib/admin/options.py:744 contrib/admin/options.py:1001 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:763 +#, fuzzy +msgid "No action selected." +msgstr "үйлдлийн хугацаа" + +#: contrib/admin/options.py:844 +#, python-format +msgid "Add %s" +msgstr "%s-ийг нэмэх" + +#: contrib/admin/options.py:870 contrib/admin/options.py:1109 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: contrib/admin/options.py:935 +#, python-format +msgid "Change %s" +msgstr "%s-ийг өөрчлөх" + +#: contrib/admin/options.py:981 +msgid "Database error" +msgstr "Өгөгдлийн сангийн алдаа" + +#: contrib/admin/options.py:1043 +#, fuzzy, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] " %(name)s \"%(obj)s\" амжилттай өөрчлөгдлөө. " +msgstr[1] " %(name)s \"%(obj)s\" амжилттай өөрчлөгдлөө. " + +#: contrib/admin/options.py:1070 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1075 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: contrib/admin/options.py:1122 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr " %(name)s \"%(obj)s\" амжилттай устгагдлаа." + +#: contrib/admin/options.py:1159 +#, python-format +msgid "Change history: %s" +msgstr "Өөрчлөлтийн түүх: %s" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Хэрэглэгчийн нэр, нууц үгээ зөв оруулна уу. Том жижиг үсгийн ялгааг гаргах " +"хэрэгтэй." + +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "Орсон хуудас тань хүчингүй болсон тул ахин нэвтрэнэ үү." + +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Та хөтчөө cookies-ийг ажиллуулахаар тохируулаагүй юм шиг байна. Cookies-ийг " +"ажиллахаар болгоод, энэ хуудсыг ахин ачааалж үзнэ үү." + +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "Хэрэглэгчийн нэрэнд '@' тэмдэгтийг оруулах боломжгүй." + +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Цахим шуудангийн хаяг хэрэглэгчийн нэр биш. Оронд нь '%s' -ийг оруулна уу." + +#: contrib/admin/sites.py:393 +msgid "Site administration" +msgstr "Сайтын удирдлага" + +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "Нэвтрэх" + +#: contrib/admin/sites.py:452 +#, python-format +msgid "%s administration" +msgstr "%s удирдлага" + +#: contrib/admin/widgets.py:75 +msgid "Date:" +msgstr "Огноо:" + +#: contrib/admin/widgets.py:75 +msgid "Time:" +msgstr "Цаг:" + +#: contrib/admin/widgets.py:99 +msgid "Currently:" +msgstr "Одоогоор:" + +#: contrib/admin/widgets.py:99 +msgid "Change:" +msgstr "Өөрчлөлт:" + +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "Хайх" + +#: contrib/admin/widgets.py:244 +msgid "Add Another" +msgstr "Ахиад нэмэх:" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Хуудас олдсонгүй." + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Уучлаарай, хандахыг хүссэн хуудас тань олдсонгүй." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Нүүр" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Серверийн алдаа" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Серверийн алдаа (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Серверийн алдаа (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 "" +"Алдаа гарсан байна. Энэ талаар цахим шуудангаар дамжуулан сайтын удирдлагад " +"мэдэгдэж нэн даруй засах хэрэгтэй. Хүлээцтэй хандсанд баярлалаа." + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Очих" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/base.html:28 +msgid "Welcome," +msgstr "Тавтай морилно уу" + +#: contrib/admin/templates/admin/base.html:33 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Баримтжуулалт" + +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "Нууц үг өөрчлөх" + +#: contrib/admin/templates/admin/base.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "Гарах" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Жанго сайтын удирдлага" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Жанго удирдлага" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "Нэмэх" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "Түүх" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "Сайтаас харах" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Доорх алдааг засна уу." +msgstr[1] "Доорх алдаануудыг засна уу." + +#: contrib/admin/templates/admin/change_list.html:63 +#, python-format +msgid "Add %(name)s" +msgstr "%(name)s нэмэх" + +#: contrib/admin/templates/admin/change_list.html:82 +msgid "Filter" +msgstr "Шүүлтүүр" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 +msgid "Delete" +msgstr "Устгах" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"%(object_name)s '%(escaped_object)s'-ийг устгавал холбогдох объект нь устах " +"ч бүртгэл тань дараах төрлийн объектуудийг устгах зөвшөөрөлгүй байна:" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Та %(object_name)s \"%(escaped_object)s\"-ийг устгахдаа итгэлтэй байна уу? " +"Үүнийг устгавал дараах холбогдох зүйлс нь бүгд устана:" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "Тийм, итгэлтэй байна." + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +#, fuzzy +msgid "Delete multiple objects" +msgstr "Устгасан %(name)s \"%(object)s\"." + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, fuzzy, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"%(object_name)s '%(escaped_object)s'-ийг устгавал холбогдох объект нь устах " +"ч бүртгэл тань дараах төрлийн объектуудийг устгах зөвшөөрөлгүй байна:" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, fuzzy, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Та %(object_name)s \"%(escaped_object)s\"-ийг устгахдаа итгэлтэй байна уу? " +"Үүнийг устгавал дараах холбогдох зүйлс нь бүгд устана:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s -ээр" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "%(name)s програмд загварууд байна." + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "Өөрчлөх" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "Та ямар нэг зүйл засварлах зөвшөөрөлгүй байна." + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "Сүүлд хийсэн үйлдлүүд" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "Миний үйлдлүүд" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "Болохгүй байна" + +#: contrib/admin/templates/admin/index.html:72 +#, fuzzy +msgid "Unknown content" +msgstr "Тодорхойгүй" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Өгөгдлийн сангийн ямар нэг зүйл буруу суугдсан байна. Өгөгдлийн сангийн " +"зохих хүснэгт үүсгэгдсэн эсэх, өгөгдлийн санг зохих хэрэглэгч унших " +"боломжтой байгаа эсэхийг шалгаарай." + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "Хэрэглэгчийн нэр:" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "Нууц үг:" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "Огноо/хугацаа" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "Хэрэглэгч" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "Үйлдэл" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Уг объектэд өөрчлөлтийн түүх байхгүй байна. Магадгүй үүнийг уг удирдлагын " +"сайтаар дамжуулан нэмээгүй байх." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Бүгдийг харуулах" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Хадгалах" + +#: contrib/admin/templates/admin/search_form.html:8 +#, fuzzy +msgid "Search" +msgstr "3-р сар" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 илэрц" +msgstr[1] "%(counter)s илэрц" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "Нийт %(full_result_count)s" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "Шинээр хадгалах" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "Хадгалаад өөрийг нэмэх" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "Хадгалаад нэмж засах" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Эхлээд хэрэглэгчийн нэр нууц үгээ оруулна уу. Ингэснээр та хэрэглэгчийн " +"сонголтыг нэмж засварлах боломжтой болно. " + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "%(username)s.хэрэглэгчид шинэ нууц үг оруулна уу." + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Нууц үг " + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Нууц үг (ахиад)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Батлахын тулд дээрх нууц үгээ ахин хийнэ үү." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, fuzzy, python-format +msgid "Add another %(verbose_name)s" +msgstr "%(verbose_name)s устлаа." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +#, fuzzy +msgid "Remove" +msgstr "устлаа" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "Устгах уу?" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Манай вэб сайтыг ашигласанд баярлалаа." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Ахин нэвтрэх " + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "Нууц үгийн өөрчлөлт" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Нууц үгийн өөрчлөлт амжилттай" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Нууц үг тань өөрчлөгдлөө." + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" +"Аюулгүй байдлын үүднээс хуучин нууц үгээ оруулаад шинэ нууц үгээ хоёр удаа " +"хийнэ үү. Ингэснээр нууц үгээ зөв бичиж байгаа эсэхийг тань шалгах юм." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Хуучин нууц үг" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Шинэ нууц үг" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "Нууц үгээ солих" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Нууц үг авах" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "Нууц үг авах явц дууслаа" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Та нууц үгтэй боллоо. Одоо бүртгэлд нэвтрэх боломжтой." + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "Нууц үг авахаа баталгаажуулах" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "Шинэ нууц үг оруулах" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Шинэ нууц үгээ хоёр удаа оруулна уу. Ингэснээр нууц үгээ зөв бичиж байгаа " +"эсэхийг тань шалгах юм. " + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Шинэ нууц үг:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Нууц үгээ батлах:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "Нууц үг авах амжилтгүй" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Нууц үг авах холбоос болохгүй байна. Үүнийг аль хэдийнэ хэрэглэснээс болсон " +"байж болзошгүй. Шинэ нууц үг авахаар хүсэлт гаргана уу. " + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Нууц үг авах амжилттай" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Таны оруулсан цахим шуудангийн хаягаар нууц үг авах зааварчилгааг илгээлээ. " +"Энэ зааварчилгаа танд шууд очих болно. " + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Та нууц үг авахаар хүсэлт гаргасан тул уг цахим шууданг илгээлээ." + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "%(site_name)s гэсэн хэрэглэгчийн бүртгэлд " + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "Дараах хуудас руу орон шинэ нууц үг сонгоно уу:" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "Мартсан тохиолдолд хийх хэрэглэгчийн нэр:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "Манай сайтыг хэрэглэсэнд баярлалаа!" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(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 e-mail " +"instructions for setting a new one." +msgstr "" +"Нууц үгээ мартчихсан уу? Доорх хэсэгт цахим шуудангийн хаягаа оруулвал бид " +"хаягаар тань шинийг авах зааварчилгаа явуулах болно." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Цахим шуудангийн хаяг:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Нууц үгээ шинэчлэх" + +#: contrib/admin/templatetags/admin_list.py:239 +msgid "All dates" +msgstr "Бүх огноо" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "%s-ийг сонго" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "%s-ийг өөрчлөхөөр сонго" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "сайт" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "загвар" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "шошго:" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "шүүлтүүр:" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "харах:" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "%r програм олдсонгүй" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr " %(app_label)r програмд %(model_name)r загвар олдсонгүй" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "холбогдох `%(app_label)s.%(data_type)s`объект" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "загвар:" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "холбогдох `%(app_label)s.%(object_name)s` объектууд" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "бүх %s" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "%s-ийн тоо" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr " %s объектийн нөхөх хэсгүүд" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s нь url хэлбэрийн объект биш байна" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

                        To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                        \n" +msgstr "" +"\n" +"

                        Bookmarklet суулгахын тулд холбоосыг bookmark-ийн\n" +" хэрэгслийн мөрт аваачих буюу холбоосон дээр хулганы баруун\n" +" товчлуураар дарж bookmark-даа нэмнэ. Ингэснээр та сайтын аль ч\n" +" хуудаснаас bookmarklet-ээ сонгох боломжтой болно. Зарим\n" +" bookmarklet-ийн хувьд та \"дотоод\" гэж тодорхойлогдсон компьютерээс\n" +" сайт руу орох шаардлагатай болдог (компьютер тань \"дотоод\" мөн\n" +" эсэхийг мэдэхгүй байгаа бол системийн удирдлагаасаа асууна уу).

                        \n" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "Энэ хуудасны баримтжуулалт" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Таныг ямар ч хамаагүй хуудаснаас тухайн хуудсыг гаргаж байгаа " +"баримтжуулалтанд аваачна." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Объектийн ID-ийг харуулах" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Нэг объект харуулж буй хуудаснуудын агуулгын төрөл болоод давтагдахгүй ID-" +"ийг харуулна." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Энэ объектийг засварлах (одоо хэрэглэж буй цонх)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Нэг объект харуулж буй хуудаснуудын удирдлагын хуудсанд аваачна." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Энэ объектийг засварлах (шинэ цонх)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Дээрхийн нэгэн адил ч удирдлагын хуудсыг шинэ цонхонд нээнэ." + +#: contrib/auth/admin.py:29 +msgid "Personal info" +msgstr "Хувийн мэдээлэл" + +#: contrib/auth/admin.py:30 +msgid "Permissions" +msgstr "Зөвшөөрөл" + +#: contrib/auth/admin.py:31 +msgid "Important dates" +msgstr "Чухал огноо" + +#: contrib/auth/admin.py:32 +msgid "Groups" +msgstr "Бүлгүүд" + +#: contrib/auth/admin.py:114 +msgid "Password changed successfully." +msgstr "Нууц үг амжилттай өөрчлөгдлөө." + +#: contrib/auth/admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "Нууц үг өөрчлөх: %s" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Хэрэглэгчийн нэр" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +#, fuzzy +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Зайлшгүй. 30 буюу түүнээс цөөн тэмдэгт. Зөвхөн стандарт тэмдэгт хэрэглэнэ " +"(үсэг, тоо, нэмэлт тэмдэг)" + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +#, fuzzy +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Энэ нь зөвхөн үсэг, тоо, нэмэлт тэмдэгүүдийг л агуулсан байх хэрэгтэй." + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "Нууц үгийн баталгаа" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "Ийм хэрэглэгчийн нэртэй хэрэглэгч өмнө нь бүртгүүлсэн байна." + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "Хоёр нууц үг зөрж байна." + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "Энэ бүртгэл идэвхгүй байна." + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Та вэб хөтчөө cookie ажиллахаар тохируулаагүй юм шиг байна. Нэвтрэхэд cookie " +"шаардлагатай байдаг." + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "Цахим шуудан" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Цахим шуудангийн энэ хаягт хэрэглэгчийн бүртгэл байхгүй байна. Та " +"бүртгүүлсэн гэдэгтээ итгэлтэй байна уу?" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "Нууц үг %s дээр хийгдсэн" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "Шинэ нууц үгийн баталгаа" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Хуучин нууц үгээ буруу оруулсан байна. Ахин оруулна уу." + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "нэр" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "Код" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "зөвшөөрөл" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "зөвшөөрлүүд" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "бүлэг " + +#: contrib/auth/models.py:99 contrib/auth/models.py:206 +msgid "groups" +msgstr "бүлгүүд" + +#: contrib/auth/models.py:196 +msgid "username" +msgstr "хэрэглэгчийн нэр" + +#: contrib/auth/models.py:196 +#, fuzzy +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Зайлшгүй. 30 буюу түүнээс цөөн тэмдэгт. Зөвхөн стандарт тэмдэгт хэрэглэнэ " +"(үсэг, тоо, нэмэлт тэмдэг)" + +#: contrib/auth/models.py:197 +msgid "first name" +msgstr "нэр" + +#: contrib/auth/models.py:198 +msgid "last name" +msgstr "овог" + +#: contrib/auth/models.py:199 +msgid "e-mail address" +msgstr "цахим шуудангийн хаяг" + +#: contrib/auth/models.py:200 +msgid "password" +msgstr "нууц үг" + +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Нууц үгийнхээ хэлбэр -ийг өөрчлөхдөө '[algo]$[salt]$[hexdigest]' буюу хэрэглэнэ үү." + +#: contrib/auth/models.py:201 +msgid "staff status" +msgstr "Хэрэглэгчдийн төлөв" + +#: contrib/auth/models.py:201 +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Уг удирдлагын сайт руу хэрэглэгч нэвтрэх боломжтой эсэхийг тодорхойлно." + +#: contrib/auth/models.py:202 +msgid "active" +msgstr "идэвхтэй" + +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Энэ хэрэглэгчийг идэвхтэй болгох эсэхийг тодорхойлно. Бүртгэлийг нь устгахын " +"оронд сонгохгүй байхад л хангалттай." + +#: contrib/auth/models.py:203 +msgid "superuser status" +msgstr "Удирдлагын төлөв" + +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Энэ хэрэглэгчид бүх зөвшөөрөл байгааг ил тод харуулалгүй тодорхойлно. " + +#: contrib/auth/models.py:204 +msgid "last login" +msgstr "сүүлд нэвтэрсэн" + +#: contrib/auth/models.py:205 +msgid "date joined" +msgstr "бүртгүүлсэн огноо" + +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Энэ хэрэглэгч зөвшөөрлийг гар ажиллагаагаар авахаас гадна өөрийн байгаа " +"бүлэг бүртээ зөвшөөрөл олгуулна." + +#: contrib/auth/models.py:208 +msgid "user permissions" +msgstr "хэрэглэгчийн зөвшөөрөл" + +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "хэрэглэгч " + +#: contrib/auth/models.py:213 +msgid "users" +msgstr "хэрэглэгчид" + +#: contrib/auth/models.py:394 +msgid "message" +msgstr "мэдээлэл" + +#: contrib/auth/views.py:79 +msgid "Logged out" +msgstr "Гарсан" + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 +msgid "Enter a valid e-mail address." +msgstr "Хүчинтэй цахим шуудангийн хаяг оруул" + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "Агуулга" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "Мета өгөгдөл" + +#: contrib/comments/admin.py:40 +#, fuzzy +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "өөрчлөлтгүй хуудас" +msgstr[1] "өөрчлөлтгүй хуудас" + +#: contrib/comments/admin.py:41 +#, fuzzy +msgid "Flag selected comments" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:46 +#, fuzzy +msgid "Approve selected comments" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/comments/admin.py:50 +#, fuzzy +msgid "removed" +msgid_plural "removed" +msgstr[0] "устлаа" +msgstr[1] "устлаа" + +#: contrib/comments/admin.py:51 +#, fuzzy +msgid "Remove selected comments" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/feeds.py:13 +#, fuzzy, python-format +msgid "%(site_name)s comments" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/comments/feeds.py:23 +#, fuzzy, python-format +msgid "Latest comments on %(site_name)s" +msgstr "%(site_name)s гэсэн хэрэглэгчийн бүртгэлд " + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "Нэр" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "Цахим шуудангийн хаяг" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "Санал сэтгэгдэл" + +#: contrib/comments/forms.py:175 +#, 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 гэсэн үг оруулах хориотой." + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" +"Та энэ хэсэгт ямар нэг зүйл оруулбал санал сэтгэгдэлийг тань спам гэж үзэх " +"болно." + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "агуулгын төрөл" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "объектийн ID" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "хэрэглэгчийн нэр" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "хэрэглэгчийн цахим шуудангийн хаяг" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "хэрэглэгчийн URL" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "санал сэтгэгдэл " + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "оруулсан огноо/цаг" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "IP хаяг" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "нийтийн" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "" +"Сайтаас санал сэтгэгдлийг байнга устгахын тулд энэ хайрцагны өмнөх чагтыг " +"авна уу." + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "устлаа" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Ирсэн санал сэтгэгдэл зүй зохисгүй бол энэ хайрцгийг чагтла. Ингэснээр " +"тухайн санал сэтгэгдлийн оронд \"Энэ санал сэтгэгдлийг устгалаа\" гэсэн " +"бичиг гарч ирнэ." + +#: contrib/comments/models.py:77 +#, fuzzy +msgid "comments" +msgstr "санал сэтгэгдэл " + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" +"Энэ санал сэтгэгдлийг баталгаажсан хэрэглэгч оруулсан учир зөвхөн нэрийг нь " +"харж болно." + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" +"Энэ санал сэтгэгдлийг баталгаажсан хэрэглэгч оруулсан учир зөвхөн цахим " +"шууданг нь харж болно." + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"%(date)s-д %(user)s дараах санал сэтгэгдлийг үлдээжээ\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:170 +#, fuzzy +msgid "flag" +msgstr "өөрчлөлтгүй хуудас" + +#: contrib/comments/models.py:171 +#, fuzzy +msgid "date" +msgstr "Өдөр харгалзахгүй" + +#: contrib/comments/models.py:181 +#, fuzzy +msgid "comment flag" +msgstr "санал сэтгэгдэл " + +#: contrib/comments/models.py:182 +#, fuzzy +msgid "comment flags" +msgstr "санал сэтгэгдэл " + +#: contrib/comments/templates/comments/approve.html:4 +#, fuzzy +msgid "Approve a comment" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:4 +#, fuzzy +msgid "Thanks for approving" +msgstr "Манай сайтыг хэрэглэсэнд баярлалаа!" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:4 +#, fuzzy +msgid "Remove a comment" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "" + +#: contrib/comments/templates/comments/deleted.html:4 +#, fuzzy +msgid "Thanks for removing" +msgstr "Манай сайтыг хэрэглэсэнд баярлалаа!" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:12 +#, fuzzy +msgid "Flag" +msgstr "Малага" + +#: contrib/comments/templates/comments/flagged.html:4 +#, fuzzy +msgid "Thanks for flagging" +msgstr "Манай сайтыг хэрэглэсэнд баярлалаа!" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +#, fuzzy +msgid "Post" +msgstr "-р" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +#, fuzzy +msgid "Preview" +msgstr "харах:" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:11 +#, fuzzy +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Доорх алдааг засна уу." +msgstr[1] "Доорх алдаануудыг засна уу." + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +#, fuzzy +msgid "or make changes" +msgstr "Өөрчилсөн зүйл байхгүй байна." + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "пайтоны загвар ангилалын нэр" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "агуулгын төрлүүд" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Жишээ: '/about/contact/'. Хөтлөх буюу зам заах ташуу зураас байх хэрэгтэй." + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Энэ нь зөвхөн үсэг, тоо, нэмэлт тэмдэг, хэвтээ зураас эсвэл ташуу зураас " +"агуулсан байх ёстой." + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "Дээд хэрэглээний сонголтууд" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "гарчиг " + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "агуулга" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "санал сэтгэгдэл үлдээх боломжтой болгох" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "загварын нэр" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Жишээ: 'flatpages/contact_page.html'. Хэрэв ийм зүйл гарч ирэхгүй бол систем " +"'flatpages/default.html'-ийг хэрэглэнэ." + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "бүртгэл хийх хэрэгтэй" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Үүнийг чагтлавал зөвхөн сайтад нэвтэрсэн хэрэглэгч сайтыг харах боломжтой " +"болно." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "өөрчлөлтгүй хуудас" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "өөрчлөлтгүй хуудаснууд" + +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Уучлаарай, таны маягт хүчингүй болсон байна. Энэ хуудаснаас маягт бөглөнө үү." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:270 +#, fuzzy +msgid "Point" +msgstr "сар" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "" + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "Дүрс оруулаагүй байна." + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "Оруулах боломжгүй дүрс" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "Оруулах боломжгүй дүрсийн төрөл" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "-р" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "-р" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "-р" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "-р" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f сая" +msgstr[1] "%(value).1f сая" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f тэр бум" +msgstr[1] "%(value).1f тэр бум" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f их наяд" +msgstr[1] "%(value).1f их наяд" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "нэг " + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "хоёр" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "гурав" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "дөрөв" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "тав" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "зургаа" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "долоо" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "найм" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "ес" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "өнөөдөр" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "маргааш" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "өчигдөр" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Шуудангийн дугаараа NNNN буюу ANNNNAAA хэлбэрээр оруулна уу. " + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "Энэ хэсэгт зөвхөн тоо оруулна." + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "Энэ хэсэгт зөвхөн 7-8 оронтой тоо оруулна." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "CUIT-ээ XX-XXXXXXXX-X эсвэл XXXXXXXXXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "Хүчингүй CUIT байна." + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "Бургенланд" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "Каринтиа" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "Доод Австри" + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "Дээд Австри" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "Зальцбург" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "Стириа" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "Тирол" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "Ворарлберг" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "Венн" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "Шуудангийн индексээ XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" +"Австрийн нийгмийн хамгааллын дугаараа XXXX XXXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "Шуудангийн 4 оронтой дугаараа оруулна уу." + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Шуудангийн индексээ XXXXX-XXX хэлбэрээр оруулна уу. " + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Утасны дугаараа XX-XXXX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "Бразилийн мужаа сонгоно уу. Энэ нь байгаа муж биш байна." + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "CPF дугаар хүчингүй байна." + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" +"Энэ хэсэгт 11-ээс илүүгүй оронтой тоо буюу 14-өөс илүүгүй тэмдэгт оруулна уу." + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "CNPJ дугаар хүчингүй байна." + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Энэ хэсэгт наад зах нь 14 оронтой тоо оруулна уу." + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Шуудангийн дугаараа XXX XXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "Канадын нийгмийн даатгалын дугаараа XXX-XXX-XXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Ааргау" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Аппензелл Иннерходен " + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Аппензелл Ауссеррходен" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Басел-Стат" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Басел-Ланд" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Берн" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Фрибург" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Женев" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Гларус" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Граубенден" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Юра" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Лусерн" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Неучател" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Нидвалден" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Обвалден" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Шафхаусен" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Швиз" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Солотурн" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "Сант-Галлен" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Тургау" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Тикино" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Ури" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Валаис" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Вауд" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Зуг" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Зурик" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Щвейцарийн үнэмлэх юм уу пасспортныхоо дугаарыг X1234567<0 эсвэл 1234567890 " +"хэлбэрээр оруулна уу." + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "Чилийн RUT-ээ оруулна уу." + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Чилийн RUT-ээ XX.XXX.XXX-X хэлбэрээр оруулна уу. " + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "Чилийн RUT хүчингүй байна." + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:11 +#, fuzzy +msgid "Pilsen Region" +msgstr "Зилина муж" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:13 +#, fuzzy +msgid "Usti Region" +msgstr "Косиз муж" + +#: contrib/localflavor/cz/cz_regions.py:14 +#, fuzzy +msgid "Liberec Region" +msgstr "Тренкин муж" + +#: contrib/localflavor/cz/cz_regions.py:15 +#, fuzzy +msgid "Hradec Region" +msgstr "Тренкин муж" + +#: contrib/localflavor/cz/cz_regions.py:16 +#, fuzzy +msgid "Pardubice Region" +msgstr "Косиз муж" + +#: contrib/localflavor/cz/cz_regions.py:17 +#, fuzzy +msgid "Vysocina Region" +msgstr "Зилина муж" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:20 +#, fuzzy +msgid "Zlin Region" +msgstr "Зилина муж" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Шуудангийн дугаараа XXXXX буюу XXX XX хэлбэрээр оруулна уу." + +#: contrib/localflavor/cz/forms.py:48 +#, fuzzy +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" +"Татварын дугаараа XXX-XXX-XX-XX буюу XX-XX-XXX-XXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +#, fuzzy +msgid "Enter a valid birth number." +msgstr "VAT дугаараа оруулна уу." + +#: contrib/localflavor/cz/forms.py:107 +#, fuzzy +msgid "Enter a valid IC number." +msgstr "VAT дугаараа оруулна уу." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Баден-Вюртемберг" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Бавариа" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Берлин" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Бранденбург" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Бремен" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Хамбург" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Хессен" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Мекленбург-Баруун Помераниа" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Саксония" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Хойд Рейн-Вестфалиа" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Рейнланд-Палатинет" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Саарланд" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Саксония" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Саксония-Анхалт" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Шлесвиг-Холстейн" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Турингиа" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Шуудангийн индексээ XXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Германы үнэмлэхний дугаарыг XXXXXXXXXXX-XXXXXXX-XXXXXXX-X хэлбэрээр оруулна " +"уу." + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "Арава" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "Албасет" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "Алакант" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "Алмериа" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "Авила" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "Бадажоз" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "Иллес Балеарс" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "Барселон" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "Бургоз" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "Касерес" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "Кадиз" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "Кастелло" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "Сиудад Рийл" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "Кордоба" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "А Коруна" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "Куэнса" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "Гирона" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "Гранада" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "Гуадалажара" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Гипузкоа" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "Хуелва" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "Хуеска" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "Жен" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "Леон" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "Ллейда" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "Ла Риожа" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "Луго" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "Мадрид" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "Малага" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "Мурсиа" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "Наварре" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "Оуренс" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "Астуриас" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "Паленсиа" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "Лас Палмас" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "Понтеведра" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "Саламанка" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "Санта Круз дэ Тенериф" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "Кантабриа" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "Сеговиа" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "Севилль" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "Сориа" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "Таррагона" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "Теруел" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "Толедо" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "Валенсиа" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "Валладолид" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "Бизкаиа" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "Замора" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "Зарагоза" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "Сеута" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "Мелилла" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "Андалусиа" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "Арагон" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Астуриасын вант улс" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "Балеарикийн арлууд" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "Баск улс" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "Канарын арлууд" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "Кастил-Ла-Манча" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "Кастил ба Леон" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "Каталон" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "Экстремадура" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "Галисиа" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "Мурсиа муж" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Наваррегийн Форал суурин" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "Валенсиагийн суурин" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Шуудангийн дугаараа 01XXX - 52XXX хооронд, энэ хэлбэрээр оруулна уу." + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Утасны дугаараа 6XXXXXXXX, 8XXXXXXXX буюу 9XXXXXXXX хэлбэрийн аль нэгээр " +"оруулна уу." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "NIF, NIE, CIF оруулна уу." + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "NIF, NIE оруулна уу." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "NIF-ийн шалгах нийлбэр буруу байна." + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "NIE-ийн шалгах нийлбэр буруу байна." + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "CIF-ийн шалгах нийлбэр буруу байна." + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Дансны дугаараа XXXX-XXXX-XX-XXXXXXXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "Дансны дугаарын шалгах нийлбэр буруу байна." + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "Финляндийн нийгмийн хамгааллын дугаараа оруулна уу." + +#: contrib/localflavor/fr/forms.py:31 +#, fuzzy +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Утасны дугаар XXXX-XXXXXX хэлбэрээр байх ёстой." + +#: contrib/localflavor/id/forms.py:28 +#, fuzzy +msgid "Enter a valid post code" +msgstr "Шуудангийн дугаараа оруулна уу." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Утасны дугаараа оруулна уу." + +#: contrib/localflavor/id/forms.py:107 +#, fuzzy +msgid "Enter a valid vehicle license plate number" +msgstr "Утасны дугаараа оруулна уу." + +#: contrib/localflavor/id/forms.py:170 +#, fuzzy +msgid "Enter a valid NIK/KTP number" +msgstr "VAT дугаараа оруулна уу." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +#, fuzzy +msgid "Bali" +msgstr "Бенгал" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +#, fuzzy +msgid "Banten" +msgstr "Агуулга" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +#, fuzzy +msgid "Bengkulu" +msgstr "Бенгал" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +#, fuzzy +msgid "Gorontalo" +msgstr "Гирона" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +#, fuzzy +msgid "Jambi" +msgstr "Тамил" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +#, fuzzy +msgid "Lampung" +msgstr "8-р сар " + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +#, fuzzy +msgid "Maluku" +msgstr "Малаки" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +#, fuzzy +msgid "Magelang" +msgstr "Малага" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +#, fuzzy +msgid "Madiun" +msgstr "Мадрид" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +#, fuzzy +msgid "Tapanuli" +msgstr "Тамаулипас" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +#, fuzzy +msgid "Bandung" +msgstr "Бранденбург" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +#, fuzzy +msgid "Cirebon" +msgstr "Гирона" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +#, fuzzy +msgid "Bogor" +msgstr "Нёго" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +#, fuzzy +msgid "Semarang" +msgstr "Серби" + +#: contrib/localflavor/id/id_choices.py:87 +#, fuzzy +msgid "Pati" +msgstr "идэвхтэй" + +#: contrib/localflavor/id/id_choices.py:91 +#, fuzzy +msgid "Surabaya" +msgstr "Бямба гариг" + +#: contrib/localflavor/id/id_choices.py:92 +#, fuzzy +msgid "Madura" +msgstr "Мадрид" + +#: contrib/localflavor/id/id_choices.py:93 +#, fuzzy +msgid "Malang" +msgstr "Малага" + +#: contrib/localflavor/id/id_choices.py:94 +#, fuzzy +msgid "Jember" +msgstr "11-р сар" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +#, fuzzy +msgid "Garut" +msgstr "Гларус" + +#: contrib/localflavor/ie/ie_counties.py:8 +#, fuzzy +msgid "Antrim" +msgstr "Антрим каунти" + +#: contrib/localflavor/ie/ie_counties.py:9 +#, fuzzy +msgid "Armagh" +msgstr "Арагон" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +#, fuzzy +msgid "Cavan" +msgstr "Каталан" + +#: contrib/localflavor/ie/ie_counties.py:12 +#, fuzzy +msgid "Clare" +msgstr "Касерес" + +#: contrib/localflavor/ie/ie_counties.py:13 +#, fuzzy +msgid "Cork" +msgstr "буюу" + +#: contrib/localflavor/ie/ie_counties.py:14 +#, fuzzy +msgid "Derry" +msgstr "2-р сар" + +#: contrib/localflavor/ie/ie_counties.py:15 +#, fuzzy +msgid "Donegal" +msgstr "нэг " + +#: contrib/localflavor/ie/ie_counties.py:16 +#, fuzzy +msgid "Down" +msgstr "Дэвон" + +#: contrib/localflavor/ie/ie_counties.py:17 +#, fuzzy +msgid "Dublin" +msgstr "Лублин" + +#: contrib/localflavor/ie/ie_counties.py:18 +#, fuzzy +msgid "Fermanagh" +msgstr "Ферманаф каунти" + +#: contrib/localflavor/ie/ie_counties.py:19 +#, fuzzy +msgid "Galway" +msgstr "Галисиа" + +#: contrib/localflavor/ie/ie_counties.py:20 +#, fuzzy +msgid "Kerry" +msgstr "2-р сар" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +#, fuzzy +msgid "Louth" +msgstr "Гарах" + +#: contrib/localflavor/ie/ie_counties.py:28 +#, fuzzy +msgid "Mayo" +msgstr "5-р сар" + +#: contrib/localflavor/ie/ie_counties.py:29 +#, fuzzy +msgid "Meath" +msgstr "Мета өгөгдөл" + +#: contrib/localflavor/ie/ie_counties.py:30 +#, fuzzy +msgid "Monaghan" +msgstr "Ахин нэвтрэх " + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +#, fuzzy +msgid "Roscommon" +msgstr "санал сэтгэгдэл " + +#: contrib/localflavor/ie/ie_counties.py:33 +#, fuzzy +msgid "Sligo" +msgstr "Шига" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +#, fuzzy +msgid "Tyrone" +msgstr "Тирол" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +#, fuzzy +msgid "Westmeath" +msgstr "Баруун Помераниа" + +#: contrib/localflavor/ie/ie_counties.py:38 +#, fuzzy +msgid "Wexford" +msgstr "Лха" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Шуудангийн индексээ XXXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Исландын үнэмлэхний дугаараа XXXXXX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "Исландын үнэмлэхний дугаар хүчингүй байна." + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "Шуудангийн индексээ оруулна уу." + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "Нийгмийн хамгааллын дугаараа оруулна уу." + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "VAT дугаараа оруулна уу." + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Шуудангийн дугаараа XXXXXXX буюу XXX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Хоккайдо" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Аомори" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Иватэ" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Мияаги" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Акита" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Ямагата" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Фукушима" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ибараки" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Точиги" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Гунма" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Саитама" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Чиба" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Токио" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Канагва" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Яманаши" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Нагано" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Нийгата" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Тояма" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ишикава" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Фукуи" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Гифу" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Шизуока" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Аичи" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Мие" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Шига" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Кёто" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Осака" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Нёго" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Нара" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Вакаяма" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Тоттори" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Шиманэ" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Окаяма" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Хирошима" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Ямагучи" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Токушима" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Кагава" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Эхимэ" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Кочи" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Фукуока" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Сага" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Нагасаки" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Кумамото" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Оита" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Миязаки" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Кагошима" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Окинава" + +#: contrib/localflavor/kw/forms.py:25 +#, fuzzy +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Өмнөд Африкийн ID дугаараа оруулна уу." + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "Агуаскалиентэс" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "Бажа Калифорни" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "Бажа Калифорни Сур" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "Кампече" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "Чихуахуа" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "Чиапас" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "Коахуила" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "Колима" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "Холбооны Дистрито" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "Дуранго" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "Гуерреро" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "Гуанажуато" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "Хидалго" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "Жалиско" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "Мехико" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "Мичоакан" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "Морелос" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "Наярит" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "Нуево Леон" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "Вахака" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "Пуебло" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "Куеретаро" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "Кинтана Ро" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "Синалоа" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "Сан Луис Потоси" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "Сонора" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "Табаско" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "Тамаулипас" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "Тласкала" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "Веракруз" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "Юкатан" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "Закатекас" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "Шуудангийн дугаараа оруулна уу." + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "SoFi дугаараа оруулна уу." + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "Дрэнтэ" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Флеволанд" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Фраисланд" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Гелдерланд" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Гронинген" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Лимбург" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Нуурд-Брабант" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Нуурд-Холланд" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Овераисл" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Утрехт" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Зийланд" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Заит-Холланд" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "Норвегийн нийгмийн хамгааллын дугаараа оруулна уу." + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "Энэ хэсэгт 8 оронтой тоо оруулна." + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "Энэ хэсэгт 11 оронтой тоо оруулна." + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "Үндэсний таних дугаар 11 оронтой байна." + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "Үндэсний таних дугаарын шалгах нийлбэр буруу байна." + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" +"Татварын дугаараа XXX-XXX-XX-XX буюу XX-XX-XXX-XXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Татварын дугаарын шалгах нийлбэр буруу байна." + +#: contrib/localflavor/pl/forms.py:109 +#, fuzzy +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "Үндэсний бизнесийн бүртгэлийн дугаар 7-9 оронтой байна." + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "Үндэсний бизнесийн бүртгэлийн дугаарын шалгах нийлбэр буруу байна." + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Шуудангийн дугаараа XX-XXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Доод Силесиа" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Куявиа-Помераниа" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Лублин" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Лубуски" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Лодз" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Бага Польш" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Масовиа" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Ополе" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Субкарпатиа" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Подласие" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Помераниа" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Силесиа" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Свентокшишки" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Вармиа-Масуриа" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Их Польш" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "Баруун Помераниа" + +#: contrib/localflavor/pt/forms.py:17 +#, fuzzy +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Шуудангийн индексээ XXXXX-XXX хэлбэрээр оруулна уу. " + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "CIF оруулна уу." + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "CNP оруулна уу." + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "IBAN-ийг ROXX-XXXX-XXXX-XXXX-XXXX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "Утасны дугаар XXXX-XXXXXX хэлбэрээр байх ёстой." + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "Шуудангийн дугаараа XXXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/se/forms.py:50 +#, fuzzy +msgid "Enter a valid Swedish organisation number." +msgstr "SoFi дугаараа оруулна уу." + +#: contrib/localflavor/se/forms.py:107 +#, fuzzy +msgid "Enter a valid Swedish personal identity number." +msgstr "Финляндийн нийгмийн хамгааллын дугаараа оруулна уу." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +#, fuzzy +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Шуудангийн дугаараа XX-XXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +#, fuzzy +msgid "Södermanland" +msgstr "Гелдерланд" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +#, fuzzy +msgid "Kalmar" +msgstr "3-р сар" + +#: contrib/localflavor/se/se_counties.py:24 +#, fuzzy +msgid "Gotland" +msgstr "Шотланд" + +#: contrib/localflavor/se/se_counties.py:25 +#, fuzzy +msgid "Blekinge" +msgstr "Берн" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +#, fuzzy +msgid "Halland" +msgstr "Саарланд" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +#, fuzzy +msgid "Dalarna" +msgstr "Галанта" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Банска Бистрика" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Банска Стиавника" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Бардежов" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Бановц над Бебравоу" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Брезно" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Братислав l" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Братислав ll" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Братислав lll" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Братислав lV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Братислав V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Битка" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Кадка" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Детва" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Долни Кубин" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Дунайска Стреда" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Галанта" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Гелника" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Хлоховек" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Хюменн" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Илава" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Кезмарок" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Комарно" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Косиз I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Косиз II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Косиз III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Косиз IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Косиз - околие" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Крупина" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Кисук Нове Место" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Левис " + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Левока" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Липтовски Микулас" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Лукенек" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Малаки" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Мартин " + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Медзилаборс" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Михаловс" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Мияава" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Наместово" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Нитра" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Нове Место над Вахом" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Нове Замки" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Партизанске" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Пезинок" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Пиестани" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Полтар" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Попрад" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Повазска Бистрика" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Пресов" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Приевидза" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Пучов" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Ревука" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Римавска Собота" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Рознава" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Рузомберок" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Сабинов" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Сенек" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Сеника" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Скалиса" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Снина" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Собранс" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Списска Нова Вес" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Стара Любовна" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Стропков" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Свидник" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Сала" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Тополсани" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Требисов" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Тренкин" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Трнава" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Туркианск Теплис" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Тврдосин" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Велки Кртис" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Вранов над Топлоу" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Злате Моравс" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Зволен" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Зарновика" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Зиар над Хроном" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Зилина" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Банска Бистрика муж " + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Братислав муж " + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Косиз муж" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Нитра муж" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Пресов муж" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Тренкин муж" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Трнава муж" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Зилина муж" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "Шуудангийн дугаараа оруулна уу." + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "Бэдфордшир" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "Букингхэмшир" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "Чешир" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "Корнүолл ба Скиллийн арлууд" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "Кумбриа" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "Дэрбишир" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "Дэвон" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "Дорсэт" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "Дурхам" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "Ийст Суссекс" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "Эссекс" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "Глоусестершир" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "Их Лондон " + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "Их Манчестэр" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "Хэмпшир" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "Хэртфордшир" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "Кэнт" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "Ланкашир" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "Леисэстершир" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "Линколншир" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "Мэрсэисайд" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "Норфолк" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "Норт Йоркшир" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "Нортамптоншир" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "Нортамберланд" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "Ноттингхэмшир" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "Оксфордшир" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "Шропшир" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "Сомерсэт" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "Саут Йоркшир" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "Стаффордшир" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "Суффолк" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "Сурреи" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "Тийн ба Виэр" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "Уарвикшир" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "Вэст Мидландс" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "Вест Суссекс" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "Вест Йоркшир" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "Вилтшир" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "Ворсестершир" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "Антрим каунти" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "Армагх каунти" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "Даун каунти" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "Ферманаф каунти" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "Лондондерри каунти" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "Тирон каунти" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "Клвид " + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "Дифед" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "Гвент" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "Гвинедд" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "Дундад Гламорган" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "Повис" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "Өмнөд Гламорган" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "Баруун Гламорган" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "Бордэрс" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "Төв Шотланд" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "Дамфрайс ба Галловэй" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "Файф" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "Грампиан" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "Хайланд" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "Лотиан" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "Оркнэй арлууд" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "Шетланд арлууд" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "Стратклид" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "Тайсайд" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "Вестерн Айслс" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "Англи" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Умард Ирланд" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "Шотланд" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "Вэльс" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Шуудангийн индексээ XXXXX буюу XXXXX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/us/forms.py:26 +#, fuzzy +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Утасны дугаараа XX-XXXX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "АНУ-ын нийгмийн хамгааллын дугаараа XXX-XX-XXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "U.S. төлөв (хоёр том үсэг)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Утасны дугаар" + +#: contrib/localflavor/uy/forms.py:28 +#, fuzzy +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "CUIT-ээ XX-XXXXXXXX-X эсвэл XXXXXXXXXXXX хэлбэрээр оруулна уу." + +#: contrib/localflavor/uy/forms.py:30 +#, fuzzy +msgid "Enter a valid CI number." +msgstr "VAT дугаараа оруулна уу." + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "Өмнөд Африкийн ID дугаараа оруулна уу." + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "Өмнөд Африкийн шуудангийн дугаараа оруулна уу." + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "Зүүн Кэйп" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "Фрий стэйт" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "Гаутэнг" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "КваЗулу-Натал" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "Лимпопо" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "Мпумаланга" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "Хойд Кэйп" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "Норт Вэст" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "Баруун Кэйп" + +#: contrib/messages/tests/base.py:101 +#, fuzzy +msgid "lazy message" +msgstr "мэдээлэл" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "хаанаас" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Энэ нь домэйн нэр агуулаагүй абсолют зам байх ёстой. Жишээ нь: '/events/" +"search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "хаашаа" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Энэ нь (дээрхийн нэгэн адил) абсолют зам юм уу 'http://' гэж эхэлсэн бүтэн " +"URL байж болно. " + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "хандуулах" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "хандуулах" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "дуусах хугацаа" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "домэйн нэр" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "дэлгэцний нэр " + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "сайт" + +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Өгөгдхүүнээ оруулна уу." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "URL оруулна уу." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Энэ URL холбоос гэмтсэн юм шиг байна." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Үсэг, тоо, нэмэлт тэмдэг, зурааснаас бүрдэх `slug`-аа оруулна уу." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "IPv4 хаягаа оруулна уу. " + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Зөвхөн таслалаар тусгаарлагдсан цифр оруулна уу." + +#: core/validators.py:135 +#, fuzzy, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Энэ өгөгдхүүн хамгийн багадаа %(min)d тэмдэгттэй байх ёстой (%(length)d " +"урттай)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, fuzzy, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Энэ өгөгдхүүн %s буюу үүнээс бага байх ёстой." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, fuzzy, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Энэ өгөгдхүүн %s буюу үүнээс их байх ёстой." + +#: core/validators.py:164 +#, fuzzy, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Энэ өгөгдхүүн хамгийн багадаа %(min)d тэмдэгттэй байх ёстой (%(length)d " +"урттай)." + +#: core/validators.py:170 +#, fuzzy, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Энэ өгөгдхүүн хамгийн ихдээ %(max)d тэмдэгттэй байх ёстой (%(length)d " +"урттай)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(field_label)s-тэй %(model_name)s-ийг аль хэдийнэ оруулсан байна." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "Энэ хэсгийг хоосон орхиж болохгүй." + +#: db/models/fields/__init__.py:65 +#, fuzzy +msgid "This field cannot be blank." +msgstr "Энэ хэсгийг хоосон орхиж болохгүй." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Бүхэл тоо" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Энэ бүхэл тоо байх ёстой." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Энэ True, False-ийн аль аль нь байх ёстой. " + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Boolean (Үнэн худлын аль нэг нь)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Бичвэр (%(max_length)s хүртэл)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Таслалаар тусгаарлагдсан бүхэл тоо" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Огноо (цаггүй)" + +#: db/models/fields/__init__.py:585 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Огноогоо ЖЖЖЖ-СС-ӨӨ гэсэн хэлбэрээр оруулна уу." + +#: db/models/fields/__init__.py:586 +#, python-format +msgid "Invalid date: %s" +msgstr "Буруу огноо: %s" + +#: db/models/fields/__init__.py:667 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "Огноо/цагаа ЖЖЖЖ-СС-ӨӨ ЦЦ:ММ[:сс[.uuuuuu]] гэсэн хэлбэрээр оруулна уу." + +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Огноо (цагтай)" + +#: db/models/fields/__init__.py:735 +msgid "This value must be a decimal number." +msgstr "Энэ бутархай тоо байх ёстой." + +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Аравтын бутархайт тоо" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Цахим шуудангийн хаяг" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Файлын зам " + +#: db/models/fields/__init__.py:822 +#, fuzzy +msgid "This value must be a float." +msgstr "Энэ бүхэл тоо байх ёстой." + +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "" + +#: db/models/fields/__init__.py:912 +msgid "This value must be either None, True or False." +msgstr "Энэ None, True, False-ийн аль аль нь байх ёстой." + +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (Үнэн, худал, эсвэл юу ч биш)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Бичвэр" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Хугацаа" + +#: db/models/fields/__init__.py:1025 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Цагаа ЦЦ:ММ[:сс[.uuuuuu]] гэсэн хэлбэрээр оруулна уу. " + +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "XML бичвэр" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "" + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "" + +#: db/models/fields/related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Нэгээс олныг сонгохын тулд Мак дээрх \"Control\", \"Command\"-ийг дарна уу." + +#: db/models/fields/related.py:1061 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "%(self)s ID-ийг оруулна уу. %(value)r гэсэн өгөгдхүүн буруу байна." +msgstr[1] "" +"%(self)s ID-ийг оруулна уу. %(value)r гэсэн өгөгдхүүнүүд буруу байна." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Энэ хэсгийг бөглөх шаардлагатай." + +#: forms/fields.py:204 +msgid "Enter a whole number." +msgstr "Дугаараа бүхлээр нь оруулна уу." + +#: forms/fields.py:235 forms/fields.py:256 +msgid "Enter a number." +msgstr "Дугаараа оруулна уу." + +#: forms/fields.py:259 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Энд нийтдээ %s -аас олонгүй цифр байх ёстой." + +#: forms/fields.py:260 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Энд %s -аас олонгүй бутархайн орон байх ёстой. " + +#: forms/fields.py:261 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Энд бутархайн таслалаас өмнө %s-аас олонгүй цифр байх ёстой." + +#: forms/fields.py:323 forms/fields.py:838 +msgid "Enter a valid date." +msgstr "Огноо оруулна уу." + +#: forms/fields.py:351 forms/fields.py:839 +msgid "Enter a valid time." +msgstr "Цаг оруулна уу." + +#: forms/fields.py:377 +msgid "Enter a valid date/time." +msgstr "Огноо/цаг оруулна уу." + +#: forms/fields.py:435 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Файл оруулаагүй байна. Маягтаас кодлох төрлийг чагтал. " + +#: forms/fields.py:436 +msgid "No file was submitted." +msgstr "Файл оруулаагүй байна." + +#: forms/fields.py:437 +msgid "The submitted file is empty." +msgstr "Оруулсан файл хоосон байна. " + +#: forms/fields.py:438 +#, fuzzy, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Энэ өгөгдхүүн хамгийн ихдээ %(max)d тэмдэгттэй байх ёстой (%(length)d " +"урттай)." + +#: forms/fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Зөв зураг оруулна уу. Таны оруулсан файл зүгээр зураг, гэмтсэн зургийн аль " +"нь ч биш байна." + +#: forms/fields.py:596 forms/fields.py:671 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Зөв сонголт хийгээрэй. %(value)s гэсэн сонголт байхгүй байна." + +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 +msgid "Enter a list of values." +msgstr "Өгөгдхүүний жагсаалтаа оруулна уу." + +#: forms/formsets.py:298 forms/formsets.py:300 +msgid "Order" +msgstr "Дараалал" + +#: forms/models.py:567 +#, fuzzy, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Доорх алдааг засна уу." + +#: forms/models.py:571 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:577 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:585 +#, fuzzy +msgid "Please correct the duplicate values below." +msgstr "Доорх алдааг засна уу." + +#: forms/models.py:860 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" + +#: forms/models.py:926 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Зөв сонголт хийгээрэй. Энэ сонголт байхгүй байна." + +#: forms/models.py:1008 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Зөв сонголт хийгээрэй. %s гэсэн сонголт байхгүй байна." + +#: forms/models.py:1010 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "" + +#: template/defaultfilters.py:781 +msgid "yes,no,maybe" +msgstr "тийм, үгүй, магадгүй" + +#: template/defaultfilters.py:812 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d байт" +msgstr[1] "%(size)d байт" + +#: template/defaultfilters.py:814 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:816 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:817 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "шөнө" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "үд" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Даваа гариг" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Мягмар гариг" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Лхагва гариг" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Пүрэв гариг" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Баасан гариг" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Бямба гариг" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Ням гариг" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "Дав" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Мяг" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Лха" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "Пүр" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Баа" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "Бям" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Ням" + +#: utils/dates.py:18 +msgid "January" +msgstr "1-р сар" + +#: utils/dates.py:18 +msgid "February" +msgstr "2-р сар" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "3-р сар" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "4-р сар" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "5-р сар" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "6-р сар" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "7-р сар" + +#: utils/dates.py:19 +msgid "August" +msgstr "8-р сар" + +#: utils/dates.py:19 +msgid "September" +msgstr "9-р сар" + +#: utils/dates.py:19 +msgid "October" +msgstr "10-р сар" + +#: utils/dates.py:19 +msgid "November" +msgstr "11-р сар" + +#: utils/dates.py:20 +msgid "December" +msgstr "12-р сар" + +#: utils/dates.py:23 +msgid "jan" +msgstr "1-р сар" + +#: utils/dates.py:23 +msgid "feb" +msgstr "2-р сар" + +#: utils/dates.py:23 +msgid "mar" +msgstr "3-р сар" + +#: utils/dates.py:23 +msgid "apr" +msgstr "4-р сар" + +#: utils/dates.py:23 +msgid "may" +msgstr "5-р сар" + +#: utils/dates.py:23 +msgid "jun" +msgstr "6-р сар" + +#: utils/dates.py:24 +msgid "jul" +msgstr "7-р сар" + +#: utils/dates.py:24 +msgid "aug" +msgstr "8-р сар " + +#: utils/dates.py:24 +msgid "sep" +msgstr "9-р сар" + +#: utils/dates.py:24 +msgid "oct" +msgstr "10-р сар" + +#: utils/dates.py:24 +msgid "nov" +msgstr "11-р сар" + +#: utils/dates.py:24 +msgid "dec" +msgstr "12-р сар" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "1-р сар" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "2-р сар" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "8-р сар" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "9-р сар" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "10-р сар" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "11-р сар" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "12-р сар" + +#: utils/text.py:130 +msgid "or" +msgstr "буюу" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "жил " +msgstr[1] "жил" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "сар" +msgstr[1] "сар" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "долоо хоног" +msgstr[1] "долоо хоног" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "өдөр" +msgstr[1] "өдөр" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "цаг" +msgstr[1] "цаг" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "минут" +msgstr[1] "минут" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "минут" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:518 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:520 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:541 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:542 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s амжилттай үүслээ." + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr " %(verbose_name)s амжилттай шинэчлэгдлээ." + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s устлаа." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "%(name)s дахь нэг буюу түүнээс дээш %(fieldname)s :%(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "%(name)s дахь нэг буюу түүнээс дээш %(fieldname)s:" + +#~ msgid "Old password:" +#~ msgstr "Хуучин нууц үг:" + +#~ msgid "Relation to parent model" +#~ msgstr "Эх загварт хамаарах хамаарал" + +#~ msgid "Add user" +#~ msgstr "Хэрэглэгч нэмэх" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mn/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/mn/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mn/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/mn/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,149 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-05-04 19:01+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:37 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:45 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:50 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:52 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:57 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:58 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:63 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/actions.js:18 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/media/js/actions.js:109 +#: contrib/admin/media/js/actions.min.js:5 +msgid "" +"You have unsaved changes on individual editable fields. If you run an " +"action, your unsaved changes will be lost." +msgstr "" + +#: contrib/admin/media/js/actions.js:121 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, but you haven't saved your changes to " +"individual fields yet. Please click OK to save. You'll need to re-run the " +"action." +msgstr "" + +#: contrib/admin/media/js/actions.js:123 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, and you haven't made any changes on individual " +"fields. You're probably looking for the Go button rather than the Save " +"button." +msgstr "" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Tomorrow" +msgstr "" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mn/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/mn/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/mn/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nb/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/nb/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nb/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nb/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5148 @@ +# Norwegian (Bokmål) translation of Django +# Copyright (C) 2005-2010 +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-05-16 10:12+0200\n" +"PO-Revision-Date: 2010-03-11 14:22+0100\n" +"Last-Translator: Christian Mikalsen and Jon Lønne\n" +"Language-Team: Norsk \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "Arabisk" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Bulgarsk" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "Bengalsk" + +#: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "Bosnisk" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Katalansk" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "Tsjekkisk" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "Walisisk" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dansk" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "Tysk" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "Gresk" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "Engelsk" + +#: conf/global_settings.py:55 +msgid "Spanish" +msgstr "Spansk" + +#: conf/global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "Argentinsk spansk" + +#: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Estisk" + +#: conf/global_settings.py:58 +msgid "Basque" +msgstr "Baskisk" + +#: conf/global_settings.py:59 +msgid "Persian" +msgstr "Persisk" + +#: conf/global_settings.py:60 +msgid "Finnish" +msgstr "Finsk" + +#: conf/global_settings.py:61 +msgid "French" +msgstr "Fransk" + +#: conf/global_settings.py:62 +msgid "Frisian" +msgstr "Frisisk" + +#: conf/global_settings.py:63 +msgid "Irish" +msgstr "Irsk" + +#: conf/global_settings.py:64 +msgid "Galician" +msgstr "Galisisk" + +#: conf/global_settings.py:65 +msgid "Hebrew" +msgstr "Hebraisk" + +#: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hindi" + +#: conf/global_settings.py:67 +msgid "Croatian" +msgstr "Kroatisk" + +#: conf/global_settings.py:68 +msgid "Hungarian" +msgstr "Ungarsk" + +#: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Islandsk" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Italiensk" + +#: conf/global_settings.py:71 +msgid "Japanese" +msgstr "Japansk" + +#: conf/global_settings.py:72 +msgid "Georgian" +msgstr "Georgisk" + +#: conf/global_settings.py:73 +msgid "Khmer" +msgstr "Khmer" + +#: conf/global_settings.py:74 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:75 +msgid "Korean" +msgstr "Koreansk" + +#: conf/global_settings.py:76 +msgid "Lithuanian" +msgstr "Litauisk" + +#: conf/global_settings.py:77 +msgid "Latvian" +msgstr "Latvisk" + +#: conf/global_settings.py:78 +msgid "Macedonian" +msgstr "Makedonsk" + +#: conf/global_settings.py:79 +msgid "Dutch" +msgstr "Nederlandsk" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "Norsk" + +#: conf/global_settings.py:81 +msgid "Polish" +msgstr "Polsk" + +#: conf/global_settings.py:82 +msgid "Portuguese" +msgstr "Portugisisk" + +#: conf/global_settings.py:83 +msgid "Brazilian Portuguese" +msgstr "Brasiliansk portugisisk" + +#: conf/global_settings.py:84 +msgid "Romanian" +msgstr "Rumensk" + +#: conf/global_settings.py:85 +msgid "Russian" +msgstr "Russisk" + +#: conf/global_settings.py:86 +msgid "Slovak" +msgstr "Slovakisk" + +#: conf/global_settings.py:87 +msgid "Slovenian" +msgstr "Slovensk" + +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "Albansk" + +#: conf/global_settings.py:89 +msgid "Serbian" +msgstr "Serbisk" + +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "Serbisk latin" + +#: conf/global_settings.py:91 +msgid "Swedish" +msgstr "Svensk" + +#: conf/global_settings.py:92 +msgid "Tamil" +msgstr "Tamil" + +#: conf/global_settings.py:93 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:94 +msgid "Thai" +msgstr "Thai" + +#: conf/global_settings.py:95 +msgid "Turkish" +msgstr "Tyrkisk" + +#: conf/global_settings.py:96 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: conf/global_settings.py:98 +msgid "Simplified Chinese" +msgstr "Forenklet kinesisk" + +#: conf/global_settings.py:99 +msgid "Traditional Chinese" +msgstr "Tradisjonell kinesisk" + +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "Slettet %(count)d %(items)s." + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1101 +msgid "Are you sure?" +msgstr "Er du sikker?" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Slett valgte %(verbose_name_plural)s" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

                        By %s:

                        \n" +"
                          \n" +msgstr "" +"

                          Etter %s:

                          \n" +"
                            \n" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "Alle" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "Når som helst" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "I dag" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "Siste syv dager" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "Denne måneden" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "I år" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 +msgid "Yes" +msgstr "Ja" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 +msgid "No" +msgstr "Nei" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:470 +msgid "Unknown" +msgstr "Ukjent" + +#: contrib/admin/helpers.py:19 +msgid "Action:" +msgstr "Handling:" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "tid for handling" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "objekt-ID" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "objekt repr" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "handlingsflagg" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "endre melding" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "logginnlegg" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "logginnlegg" + +#: contrib/admin/options.py:139 contrib/admin/options.py:154 +msgid "None" +msgstr "Ingen" + +#: contrib/admin/options.py:558 +#, python-format +msgid "Changed %s." +msgstr "Endret %s." + +#: contrib/admin/options.py:558 contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:802 +#: forms/models.py:553 +msgid "and" +msgstr "og" + +#: contrib/admin/options.py:563 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "Opprettet %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:567 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "Endret %(list)s for %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:572 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "Slettet %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:576 +msgid "No fields changed." +msgstr "Ingen felt endret." + +#: contrib/admin/options.py:642 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" ble opprettet." + +#: contrib/admin/options.py:646 contrib/admin/options.py:679 +msgid "You may edit it again below." +msgstr "Du kan redigere videre nedenfor." + +#: contrib/admin/options.py:656 contrib/admin/options.py:689 +#, python-format +msgid "You may add another %s below." +msgstr "Du kan opprette ny %s nedenfor." + +#: contrib/admin/options.py:677 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" ble endret." + +#: contrib/admin/options.py:685 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" ble endret. Du kan redigere videre nedenfor." + +#: contrib/admin/options.py:743 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "Du må velge objekter for å utføre handlinger på dem. Ingen objekter " +"har blitt endret." + +#: contrib/admin/options.py:761 +msgid "No action selected." +msgstr "Ingen handling valgt." + +#: contrib/admin/options.py:841 +#, python-format +msgid "Add %s" +msgstr "Opprett %s" + +#: contrib/admin/options.py:867 contrib/admin/options.py:1081 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s-objekt med primærnøkkelen %(key)r finnes ikke." + +#: contrib/admin/options.py:932 +#, python-format +msgid "Change %s" +msgstr "Endre %s" + +#: contrib/admin/options.py:977 +msgid "Database error" +msgstr "Databasefeil" + +#: contrib/admin/options.py:1013 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "%(count)s %(name)s ble endret." +msgstr[1] "%(count)s %(name)s ble endret." + +#: contrib/admin/options.py:1040 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "av %(count)d valgt" +msgstr[1] "av %(count)d valgt" + +#: contrib/admin/options.py:1042 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s valgt" +msgstr[1] "Alle %(total_count)s valgt" + +#: contrib/admin/options.py:1094 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" ble slettet." + +#: contrib/admin/options.py:1131 +#, python-format +msgid "Change history: %s" +msgstr "Endringshistorikk: %s" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på " +"små og store bokstaver." + +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "Økten din har tidsavbrutt, vennligst logg inn igjen." + +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Det ser ut som om nettleseren din ikke støtter informasjonskapsler " +"(cookies). Vennligst konfigurer nettleseren din og prøv igjen." + +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "Brukernavnet kan ikke inneholde tegnet '@'." + +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "E-postadressen er ikke brukernavnet ditt, prøv '%s' isteden." + +#: contrib/admin/sites.py:393 +msgid "Site administration" +msgstr "Nettstedsadministrasjon" + +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "Logg inn" + +#: contrib/admin/sites.py:452 +#, python-format +msgid "%s administration" +msgstr "%s-administrasjon" + +#: contrib/admin/widgets.py:75 +msgid "Date:" +msgstr "Dato:" + +#: contrib/admin/widgets.py:75 +msgid "Time:" +msgstr "Tid:" + +#: contrib/admin/widgets.py:99 +msgid "Currently:" +msgstr "Nå:" + +#: contrib/admin/widgets.py:99 +msgid "Change:" +msgstr "Endre:" + +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "Oppslag" + +#: contrib/admin/widgets.py:244 +msgid "Add Another" +msgstr "Legg til ny" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Fant ikke siden" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Beklager, men siden du spør etter finnes ikke." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Hjem" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Tjenerfeil" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Tjenerfeil (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Tjenerfeil (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 "" +"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-" +"post, og vil bli fikset snart. Takk for din tålmodighet." + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "Utfør den valgte handlingen" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Gå" + +#: contrib/admin/templates/admin/actions.html:10 +msgid "Click here to select the objects across all pages" +msgstr "Trykk her for å velge samtlige objekter fra alle sider" + +#: contrib/admin/templates/admin/actions.html:10 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Velg alle %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:12 +msgid "Clear selection" +msgstr "Nullstill valg" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/base.html:27 +msgid "Welcome," +msgstr "Velkommen," + +#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Dokumentasjon" + +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "Endre passord" + +#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "Logg ut" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django administrasjonsside" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django-administrasjon" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "Opprett" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "Historikk" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "Vis på nettsted" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vennligst korriger feilen under." +msgstr[1] "Vennligst korriger feilene under." + +#: contrib/admin/templates/admin/change_list.html:60 +#, python-format +msgid "Add %(name)s" +msgstr "Opprett %(name)s" + +#: contrib/admin/templates/admin/change_list.html:79 +msgid "Filter" +msgstr "Filtrering" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:294 +msgid "Delete" +msgstr "Slett" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Hvis du sletter %(object_name)s '%(escaped_object)s', vil også slette " +"relaterte objekter, men du har ikke tillatelse til å slette følgende " +"objekttyper:" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Er du sikker på at du vil slette %(object_name)s \"%(escaped_object)s\"? " +"Alle de følgende relaterte objektene vil bli slettet:" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "Ja, jeg er sikker" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "Slett flere objekter" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"Sletting av %(object_name)s vil også slette relaterte objekter, men du har " +"ikke tillatelse til å slette følgende objekttyper:" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Er du sikker på at du vil slette de valgte %(object_name)s-objektene? De " +"følgende objektene og deres relaterte objekter vil bli slettet:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "Etter %(filter_title)s " + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modeller tilgjengelig i %(name)s-applikasjonen." + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "Endre" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "Du har ikke rettigheter til å redigere noe." + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "Siste handlinger" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "Mine handlinger" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "Ingen tilgjengelige" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "Ukjent innhold" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Noe er galt med databaseinstallasjonen din. Sørg for at databasetabellene er " +"opprettet og at brukeren har de nødvendige rettigheter." + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "Brukernavn:" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "Passord:" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "Dato/tid" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "Bruker" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "Handling" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Dette objektet har ingen endringshistorikk. Det var sannsynligvis ikke " +"opprettet med administrasjonssiden." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Vis alle" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Lagre" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "Søk" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "Ett resultat" +msgstr[1] "%(counter)s resultater" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s totalt" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "Lagre som ny" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "Lagre og opprett ny" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "Lagre og fortsett å redigere" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å " +"endre flere brukerinnstillinger." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Skriv inn et nytt passord for brukeren %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Passord" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Passord (gjenta)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Skriv inn det samme passordet som ovenfor, for verifisering." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Legg til ny %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Fjern" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "Slette?" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet i dag." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Logg inn igjen" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "Endre passord" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Passord endret" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Ditt passord ble endret." + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" +"Venligst oppgi ditt gamle passord av sikkerhetsgrunner. Oppgi deretter ditt " +"nye passord to ganger, slik at vi kan kontrollere at det er korrekt." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Gammelt passord" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nytt passord" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "Endre passord" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Nullstill passord" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "Passord nullstilt" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Passordet ditt er satt. Du kan nå logge inn." + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "Bekreftelse på nullstilt passord" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "Oppgi nytt passord" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Venligst oppgi ditt nye passord to ganger, for å sikre at du oppgir det " +"korrekt." + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nytt passord:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Gjenta nytt passord:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "Passordet ble ikke nullstilt" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Nullstillingslinken er ugyldig, kanskje fordi den allerede har vært brukt. " +"Vennligst nullstill passordet ditt på nytt." + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Passordet ble nullstilt" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Vi har sendt deg en e-post med instruksjoner for nullstilling av passord. Du " +"bør motta den om kort tid." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" +"Du har mottatt denne e-posten fordi du har bedt om nullstilling av passordet " +"ditt" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "for din konto på %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "Vennligst gå til følgende side og velg et nytt passord:" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "Brukernavnet ditt, i tilfelle du har glemt det:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "Takk for at du bruker siden vår!" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "Hilsen %(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 e-mail " +"instructions for setting a new one." +msgstr "" +"Glemt passordet ditt? Oppgi e-postadressen din under, så sender vi deg en e-" +"post med instruksjoner for nullstilling av passord." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-postadresse:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Nullstill mitt passord" + +#: contrib/admin/templatetags/admin_list.py:240 +msgid "All dates" +msgstr "Alle datoer" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "Velg %s" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "Velg %s du ønsker å endre" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "nettsted" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "mal" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "tag:" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "filter:" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "view:" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "Fant ikke applikasjonen %r" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "Fant ikke modellen %(model_name)r i applikasjonen %(app_label)r" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "det relaterte `%(app_label)s.%(data_type)s`-objektet" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "modell:" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "relaterte `%(app_label)s.%(object_name)s`-objekter" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "alle %s" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "antall %s" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "Felter på %s-objekter" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ser ikke ut til å være et urlpattern-objekt" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Bokmerker" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "Dokumentasjonsbokmerker" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

                            To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                            \n" +msgstr "" +"\n" +"

                            For å installere bokmerker, dra linken til verktøylinja\n" +"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n" +"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n" +"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n" +"(kontakt din systemadministrator hvis du er usikker på om maskinen din er " +"\"intern\").

                            \n" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "Dokumentasjon for denne siden" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Hopp fra hvilken som helst side til dokumentasjonen for visningsfunksjonen " +"som genererte den siden." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Vis objekt-ID" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Viser \"content-type\" og en unik ID for sider som representerer et enkelt " +"objekt." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Endre dette objektet (nåværende vindu)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Hopper til administrasjonssiden for sider som representerer et enkelt objekt." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Endre dette objektet (nytt vindu)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Samme som over, men åpner administrasjonssiden i et nytt vindu." + +#: contrib/auth/admin.py:29 +msgid "Personal info" +msgstr "Personlig informasjon" + +#: contrib/auth/admin.py:30 +msgid "Permissions" +msgstr "Rettigheter" + +#: contrib/auth/admin.py:31 +msgid "Important dates" +msgstr "Viktige datoer" + +#: contrib/auth/admin.py:32 +msgid "Groups" +msgstr "Grupper" + +#: contrib/auth/admin.py:114 +msgid "Password changed successfully." +msgstr "Passordet er endret." + +#: contrib/auth/admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "Endre passord: %s" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Brukernavn" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Påkrevet. 30 tegn eller færre. Kun bokstaver, tall og @/./+/-/_." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Verdien kan kun inneholde bokstaver, tall og @/./+/-/_." + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "Passordbekreftelse" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "Det eksisterer allerede en bruker med dette brukernavnet." + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "De to passordfeltene er ikke like." + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "Denne kontoen er inaktiv." + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). " +"Informasjonskapsler er påkrevet for å logge inn." + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "E-post" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker på at " +"du er registrert?" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "Nullstilling av passord på %s" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "Bekreft nytt passord" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Ditt gamle passord er galt. Vennligst prøv igjen." + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "navn" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "kodenavn" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "rettighet" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "rettigheter" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "gruppe" + +#: contrib/auth/models.py:99 contrib/auth/models.py:206 +msgid "groups" +msgstr "grupper" + +#: contrib/auth/models.py:196 +msgid "username" +msgstr "brukernavn" + +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Påkrevet. 30 tegn eller færre. Bokstaver, tall og @/./+/-/_." + +#: contrib/auth/models.py:197 +msgid "first name" +msgstr "fornavn" + +#: contrib/auth/models.py:198 +msgid "last name" +msgstr "etternavn" + +#: contrib/auth/models.py:199 +msgid "e-mail address" +msgstr "e-postadresse" + +#: contrib/auth/models.py:200 +msgid "password" +msgstr "passord" + +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the
                            change " +"password form." +msgstr "" +"Bruk '[algo]$[salt]$[hexdigest]' eller endre passord-" +"skjemaet." + +#: contrib/auth/models.py:201 +msgid "staff status" +msgstr "administrasjonsstatus" + +#: contrib/auth/models.py:201 +msgid "Designates whether the user can log into this admin site." +msgstr "Angir at brukeren kan logge inn på denne administrasjonssiden." + +#: contrib/auth/models.py:202 +msgid "active" +msgstr "aktiv" + +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Angir at denne brukeren er aktiv. Avmerk denne i stedet for å slette kontoen." + +#: contrib/auth/models.py:203 +msgid "superuser status" +msgstr "superbruker" + +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Angir at denne brukeren har alle rettigheter uten å eksplisitt sette de." + +#: contrib/auth/models.py:204 +msgid "last login" +msgstr "siste innlogging" + +#: contrib/auth/models.py:205 +msgid "date joined" +msgstr "registrert" + +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"I tillegg til de rettighetene som blir angitt manuelt, får brukeren også " +"rettighetene til gruppene han/hun er med i." + +#: contrib/auth/models.py:208 +msgid "user permissions" +msgstr "Brukerrettigheter" + +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "bruker" + +#: contrib/auth/models.py:213 +msgid "users" +msgstr "brukere" + +#: contrib/auth/models.py:394 +msgid "message" +msgstr "melding" + +#: contrib/auth/views.py:79 +msgid "Logged out" +msgstr "Logget ut" + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:416 +msgid "Enter a valid e-mail address." +msgstr "Oppgi en gyldig e-postadresse." + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "Innhold" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "Metadata" + +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "flagget" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "Flagg valgte kommentarer" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "godkjent" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "Tillat valgte kommentarer" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "fjernet" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "Fjern valgte kommentarer" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 kommentar ble %(action)s." +msgstr[1] "%(count)s kommentarer ble %(action)s." + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "%(site_name)s kommentarer" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "Siste kommentarer fra %(site_name)s" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "Navn" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "E-postadresse" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1121 +msgid "URL" +msgstr "Nettadresse" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "Kommentar" + +#: contrib/comments/forms.py:175 +#, 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." + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" +"Hvis du oppgir noe i dette feltet, vil kommentaren bli behandlet som spam" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "innholdstype" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "objekt-ID" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "brukerens navn" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "brukerens e-postadresse" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "brukerens nettadresse" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "kommentar" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "dato/tid for innsendelse" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:916 +msgid "IP address" +msgstr "IP-adresse" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "er tilgjengelig for alle" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "Avmerk denne boksen for å fjerne kommentaren fra siden." + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "er fjernet" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Huk av denne hvis kommentaren er upassende. Meldingen \"Denne kommentaren " +"har blitt fjernet\" vil bli vist i stedet." + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "kommentarer" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" +"Denne kommentaren er skrevet av en innlogget bruker og navnet kan derfor " +"ikke endres." + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" +"Denne kommentaren er skrevet av en innlogget bruker og e-postadressen kan " +"derfor ikke endres." + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Skrevet av %(user)s, %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "flagg" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "dato" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "kommentarflagg" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "kommentarflagg" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "Tillat en kommentar" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "Gjør denne kommentaren offentlig?" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "Godkjenn" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "Takk for godkjennelse" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" +"Takk for at du tok deg tid til å forbedre kvaliteten på diskusjonen på siden " +"vår" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "Fjern en kommentar" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "Fjerne denne kommentaren?" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "Takk for fjerningen" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "Flagg denne kommentaren" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "Flagg denne kommentaren?" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "Flagg" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "Takk for flagging" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "Publiser" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "Forhåndsvisning" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "Takk for kommentar" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "Takk for din kommentar" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "Forhåndsvis kommentaren din" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Vennligst korriger feilen under" +msgstr[1] "Vennligst korriger feilene under" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "Publiser din kommentar" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "eller gjør endringer" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "python-modell klassenavn" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "innholdstyper" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Eksempel: '/om/kontakt/'. Kontroller at det er en skråstrek foran og bak." + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Dette feltet kan bare inneholde bokstaver, nummer, understreker, " +"bindestreker eller skråstreker." + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "Avanserte innstillinger" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "tittel" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "innhold" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "tillat kommentarer" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "malnavn" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Eksempel: 'flatpages/kontakt_side.html'. Hvis denne ikke er gitt, vil " +"'flatpages/default.html' bli brukt." + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "krever registrering" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Hvis denne er krysset av, kan kun innloggede brukere se siden." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "flatside" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "flatsider" + +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Vi beklager, men dette skjemaet har tidsavbrutt. Vennligst fyll ut skjemaet " +"fra denne siden." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "Punkt" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "Polygon" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "" + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "Ingen geometriverdi oppgitt." + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "Ugyldig geometriverdi" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "Ugyldig geometritype" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" +"En feil oppstod ved transformering av geometrien til SRID fra geometrifeltet." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f million" +msgstr[1] "%(value).1f millioner" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f milliard" +msgstr[1] "%(value).1f milliarder" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f billion" +msgstr[1] "%(value).1f billioner" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "én" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "to" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "tre" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "fire" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "fem" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "seks" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "sju" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "åtte" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "ni" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "i dag" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "i morgen" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "i går" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Oppgi et postnummer på formen NNNN eller ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "Feltet krever kun tall." + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "Feltet krever 7 eller 8 siffer." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Oppgi gyldig CUIT på formen XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "Ugyldig CUIT." + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "Burgenland" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "Carinthia" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "Niederösterreich" + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "Oberösterreich" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "Salzburg" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "Steiermark" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "Tirol" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "Vorarlberg" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "Wien" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "Oppgi et postnummer på formen XXXX." + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "Oppgi et gyldig Østerrisk personnummer på formen XXXX XXXXXX." + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "Oppgi et firesifret postnummer." + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Oppgi et postnummer på formen XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefonnummeret må være på formen XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" +"Velg en gyldig brasiliansk stat. Den staten er ikke et av de tilgjengelige " +"valgene." + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "Ugyldig CPF-nummer." + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Feltet krever maksimum 11 eller 14 siffer." + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "Ugyldig CNPJ-nummer." + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Feltet krever minst 14 siffer." + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Oppgi et postnummer på formen XXX XXX." + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "Oppgi et gyldig kanadisk personnummer på formen XXX-XXX-XXX." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Innerrhoden" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Ausserrhoden" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Basel-Stadt" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Basel-Landschaft" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Bern" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Genève" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Graubünden" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Luzern" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchâtel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwalden" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwalden" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Solothurn" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "St. Gallen" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Ticino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Wallis" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zürich" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Oppgi et gyldig sveitsisk identitets- eller passnummer på formen X1234567<0 " +"eller 1234567890." + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "Oppgi et gyldig chilensk RUT." + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Oppgi et gyldig chilensk RUT på formen XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "Den chilenske RUT er ugyldig." + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "Praha" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "Sentralbøhmen region" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "Sydbøhmen region" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "Plzeň region" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "Karlovy Vary region" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "Ústí nad Labem region" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "Liberec region" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "Hradec Králové region" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "Pardubice region" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "Žilina-regionen" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "Sydmähriske region" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "Olomouc region" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "Zlín region" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "Mähren-Schlesien region" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Oppgi et postnummer på formen XXXXX or XXX XX." + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Oppgi et fødselsnummer på formen XXXXXX/XXXX eller XXXXXXXXXX." + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "Oppgi et gyldig fødselsnummer." + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "Oppgi et gyldig IC-nummer." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bayern" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Vorpommern" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Niedersachsen" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Nordrhein-Westfalen" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rheinland-Pfalz" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Saarland" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Sachsen" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Sachsen-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Thüringen" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Oppgi et postnummer på formen XXXXX." + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Oppgi et gyldig tysk identitetsnummer på formen XXXXXXXXXXX-XXXXXXX-XXXXXXX-" +"X." + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "Álava" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "Albacete" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "Alicante" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "Almería" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "Ávila" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "Badajoz" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "Balearene" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "Barcelona" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "Burgos" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "Cáceres" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "Cádiz" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "Castellón" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "Ciudad Real" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "Córdoba" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "A Coruna" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "Cuenca" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "Girona" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "Granada" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "Guadalajara" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Gipuzkoa" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "Huelva" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "Huesca" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "Jaén" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "León" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "Lleida" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "La Rioja" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "Lugo" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "Madrid" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "Málaga" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "Murcia" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "Navarra" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "Ourense" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "Asturias" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "Palencia" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "Las Palmas" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "Pontevedra" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "Salamanca" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "Santa Cruz de Tenerife" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "Cantabria" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "Segovia" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "Sevilla" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "Soria" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "Tarragona" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "Teruel" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "Toledo" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "Valencia" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "Valladolid" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "Bizkaia" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "Zamora" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "Zaragoza" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "Ceuta" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "Melilla" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "Andalucía" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "Aragón" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Asturias" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "Balearene" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "Baskerland" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "Kanariøyene" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "Castilla-La Mancha" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "Castilla y León" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "Catalonia" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "Extremadura" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "Galicia" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "Murcia" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Navarra" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "Valenciana" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Oppgi et gyldig postnummer på formen 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Oppgi et gyldig telefonnummer på et av følgende formater: 6XXXXXXXX, " +"8XXXXXXXX eller 9XXXXXXXX." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Oppgi et gyldig NIF, NIE eller CIF." + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "Oppgi et gyldig NIF eller NIE." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "Ugyldig kontrollsum for NIF." + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "Ugyldig kontrollsum for NIE." + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "Ugyldig kontrollsum for CIF." + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Oppgi et gyldig kontonummer på formen XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "Ugyldig kontrollsum for kontonummer." + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "Oppgi et gyldig finsk personnummer." + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonnummeret må være på formen 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Oppgi et gyldig postnummer." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Oppgi et gyldig telefonnummer." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Oppgi et gyldig kjøretøyregistreringsnummer." + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Oppgi et gyldig NIK/KTP-nummer." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +#, fuzzy +msgid "Pati" +msgstr "aktiv" + +#: contrib/localflavor/id/id_choices.py:91 +#, fuzzy +msgid "Surabaya" +msgstr "lørdag" + +#: contrib/localflavor/id/id_choices.py:92 +#, fuzzy +msgid "Madura" +msgstr "Madrid" + +#: contrib/localflavor/id/id_choices.py:93 +#, fuzzy +msgid "Malang" +msgstr "Málaga" + +#: contrib/localflavor/id/id_choices.py:94 +#, fuzzy +msgid "Jember" +msgstr "november" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +#, fuzzy +msgid "Garut" +msgstr "Glarus" + +#: contrib/localflavor/ie/ie_counties.py:8 +#, fuzzy +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +#, fuzzy +msgid "Armagh" +msgstr "Aragón" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +#, fuzzy +msgid "Cavan" +msgstr "Katalansk" + +#: contrib/localflavor/ie/ie_counties.py:12 +#, fuzzy +msgid "Clare" +msgstr "Cáceres" + +#: contrib/localflavor/ie/ie_counties.py:13 +#, fuzzy +msgid "Cork" +msgstr "eller" + +#: contrib/localflavor/ie/ie_counties.py:14 +#, fuzzy +msgid "Derry" +msgstr "februar" + +#: contrib/localflavor/ie/ie_counties.py:15 +#, fuzzy +msgid "Donegal" +msgstr "én" + +#: contrib/localflavor/ie/ie_counties.py:16 +#, fuzzy +msgid "Down" +msgstr "Devon" + +#: contrib/localflavor/ie/ie_counties.py:17 +#, fuzzy +msgid "Dublin" +msgstr "Lublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +#, fuzzy +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +#, fuzzy +msgid "Galway" +msgstr "Galicia" + +#: contrib/localflavor/ie/ie_counties.py:20 +#, fuzzy +msgid "Kerry" +msgstr "februar" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +#, fuzzy +msgid "Louth" +msgstr "Logg ut" + +#: contrib/localflavor/ie/ie_counties.py:28 +#, fuzzy +msgid "Mayo" +msgstr "mai" + +#: contrib/localflavor/ie/ie_counties.py:29 +#, fuzzy +msgid "Meath" +msgstr "Metadata" + +#: contrib/localflavor/ie/ie_counties.py:30 +#, fuzzy +msgid "Monaghan" +msgstr "Logg inn igjen" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +#, fuzzy +msgid "Roscommon" +msgstr "kommentar" + +#: contrib/localflavor/ie/ie_counties.py:33 +#, fuzzy +msgid "Sligo" +msgstr "Shiga" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +#, fuzzy +msgid "Tyrone" +msgstr "Tirol" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +#, fuzzy +msgid "Westmeath" +msgstr "West Pomerania" + +#: contrib/localflavor/ie/ie_counties.py:38 +#, fuzzy +msgid "Wexford" +msgstr "ons" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Oppgi et postnummer på formen XXXXXXX." + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Oppgi et gyldig islandsk identifikasjonsnummer på formen XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "Det islandsk identifikasjonsnummer er ugyldig." + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "Oppgi et gyldig postnummer." + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "Oppgi et gyldig italiensk personnummer." + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "Oppgi et gyldig VAT-nummer." + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Oppgi et postnummer på formen XXXXXXX eller XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaido" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokyo" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ishikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kyoto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Osaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyogo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kochi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagasaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kumamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Oita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Oppgi et gyldig Kuwaiti Civil ID-nummer." + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "Aguascalientes" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "Baja California" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "Baja California Sur" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "Campeche" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "Chihuahua" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "Chiapas" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "Coahuila" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "Colima" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "Distrito Federal" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "Durango" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "Guerrero" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "Guanajuato" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "Hidalgo" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "Jalisco" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "Estado de México" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "Michoacán" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "Morelos" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "Nayarit" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "Nuevo León" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "Oaxaca" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "Puebla" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "Querétaro" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "Quintana Roo" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "Sinaloa" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "San Luis Potosí" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "Sonora" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "Tabasco" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "Tamaulipas" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "Tlaxcala" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "Veracruz" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "Yucatán" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "Zacatecas" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "Oppgi et gyldig postnummer." + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "Oppgi et gyldig SoFi-nummer." + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "Drenthe" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Flevoland" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Friesland" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Gelderland" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Groningen" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Limburg" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Noord-Brabant" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Noord-Holland" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Overijssel" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Utrecht" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Zeeland" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Zuid-Holland" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "Oppgi et gyldig norsk personnummer." + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "Feltet krever åtte siffer." + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "Feltet krever 11 siffer." + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "National Identification Number består av 11 siffer." + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "Feil kontrollsum for National Identification Number." + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Oppgi et NIP på formen XXX-XXX-XX-XX eller XX-XX-XXX-XXX." + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Ugyldig kontrollsum for NIP." + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "National Business Register Number (REGON) består av 9 eller 14 siffer." + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "Ugyldig kontrollsum for National Business Register Number (REGON)." + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Oppgi et postnummer på formen XX-XXX." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Lower Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kuyavia-Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Lodz" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Lesser Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masovia" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Subcarpatia" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlasie" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuria" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Greater Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "West Pomerania" + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Oppgi et postnummer på formen XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Telefonnummer må ha 9 siffer, eller starte med + eller 00." + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "Oppgi et gyldig CIF." + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "Oppgi et gyldig CNP." + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "Oppgi et gyldig IBAN på formen ROXX-XXXX-XXXX-XXXX-XXXX-XXXX." + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "Telefonnummeret må være på formen XXXX-XXXXXX." + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "Oppgi et postnummer på formen XXXXXX." + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Oppgi et gyldig svensk organisasjonsnummer." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Oppgi et gyldig svensk personnummer." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Oppgi et gyldig svensk postnummer på formen XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajska Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kezmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komarno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kosice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kosice II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kosice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kosice IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavska Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Roznava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ruzomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spisska Nova Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sala" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencin" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zilina" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Banská Bystrica-regionen" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Bratislava-regionen" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Košice-regionen" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nitra-regionen" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Prešov-regionen" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trenčín-regionen" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava-regionen" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Žilina-regionen" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "Oppgi et gyldig postnummer." + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "Bedfordshire" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "Buckinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "Cheshire" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "Cornwall" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "Cumbria" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "Derbyshire" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "Devon" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "Dorset" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "Durham" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "East Sussex" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "Essex" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "Gloucestershire" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "Stor-London" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "Stor-Manchester" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "Hampshire" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "Hertfordshire" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "Kent" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "Lancashire" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "Leicestershire" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "Lincolnshire" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "Merseyside" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "Norfolk" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "North Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "Northamptonshire" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "Northumberland" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "Nottinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "Oxfordshire" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "Shropshire" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "Somerset" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "South Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "Staffordshire" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "Suffolk" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "Surrey" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "Tyne and Wear" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "Warwickshire" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "West Midlands" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "West Sussex" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "West Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "Wiltshire" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "Worcestershire" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "Antrim" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "Armagh" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "Down" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "Londonderry" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "Clwyd" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "Dyfed" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "Gwent" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "Gwynedd" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "Mid Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "Powys" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "South Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "West Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "Borders" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "Central Scotland" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "Dumfries and Galloway" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "Fife" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "Grampian" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "Highland" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "Lothian" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "Orknøyene" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "Shetland" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "Strathclyde" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "Tayside" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "Ytre Hebridene" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "England" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Nord-Irland" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "Skottland" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "Wales" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Oppgi et postnummer på formen XXXXX eller XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefonnummeret må være på formen XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" +"Oppgi et gyldig amerikansik Social Security-nummer på formen XXX-XX-XXXX." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stat (i USA, to store bokstaver)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefonnummer" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Oppgi gyldig CI på formen X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Oppgi et gyldig CI-nummer." + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "Oppgi et gyldig South African ID-nummer." + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "Oppgi et gyldig postnummer." + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "Eastern Cape" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "Free State" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "Gauteng" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "KwaZulu-Natal" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "Limpopo" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "Mpumalanga" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "Northern Cape" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "North West" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "Western Cape" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "\"lazy\" melding" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "omadresser fra" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Dette bør være en fullstendig sti uten domenenavn. Eksempel: '/hendelser/" +"finn/" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "omadresser til" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Dette kan enten være en fullstendig sti (som over), eller en fullstendig " +"nettadresse som starter med 'http://'" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "omadressering" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "omadresseringer" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "sesjonsnøkkel" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "sesjonsdata" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "utløpsdato" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "sesjon" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "sesjoner" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "domenenavn" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "visningsnavn" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "nettsteder" + +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Oppgi en gyldig verdi." + +#: core/validators.py:87 forms/fields.py:517 +msgid "Enter a valid URL." +msgstr "Oppgi en gyldig nettadresse." + +#: core/validators.py:89 forms/fields.py:518 +msgid "This URL appears to be a broken link." +msgstr "Nettadressen fører til en side som ikke eksisterer." + +#: core/validators.py:123 forms/fields.py:861 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Oppgi en gyldig 'slug' bestående av bokstaver, nummer, understreker eller " +"bindestreker." + +#: core/validators.py:126 forms/fields.py:854 +msgid "Enter a valid IPv4 address." +msgstr "Oppgi en gyldig IPv4-adresse." + +#: core/validators.py:129 db/models/fields/__init__.py:598 +msgid "Enter only digits separated by commas." +msgstr "Oppgi kun tall adskilt med komma." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Verdien må være %(limit_value)s (den er %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:196 forms/fields.py:246 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Verdien må være mindre enn eller lik som %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:197 forms/fields.py:247 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Verdien må være større enn eller lik som %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Verdien må minimum ha %(limit_value)d tegn (den har %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Verdien kan maksimalt ha %(limit_value)d tegn (den er %(show_value)d)." + +#: db/models/base.py:780 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s må være unik for %(date_field)s %(lookup)s." + +#: db/models/base.py:795 db/models/base.py:803 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s med %(field_label)s finnes allerede." + +#: db/models/fields/__init__.py:62 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Verdien %r er ikke et gyldig valg." + +#: db/models/fields/__init__.py:63 +msgid "This field cannot be null." +msgstr "Feltet kan ikke være tomt." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be blank." +msgstr "Feltet kan ikke være blankt." + +#: db/models/fields/__init__.py:69 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Felt av typen: %(field_type)s" + +#: db/models/fields/__init__.py:477 db/models/fields/__init__.py:878 +#: db/models/fields/__init__.py:981 db/models/fields/__init__.py:992 +#: db/models/fields/__init__.py:1019 +msgid "Integer" +msgstr "Heltall" + +#: db/models/fields/__init__.py:481 db/models/fields/__init__.py:876 +msgid "This value must be an integer." +msgstr "Verdien må være et heltall." + +#: db/models/fields/__init__.py:516 +msgid "This value must be either True or False." +msgstr "Verdien må være True eller False." + +#: db/models/fields/__init__.py:518 +msgid "Boolean (Either True or False)" +msgstr "Boolsk (True eller False)" + +#: db/models/fields/__init__.py:565 db/models/fields/__init__.py:1002 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Tekst (opp til %(max_length)s tegn)" + +#: db/models/fields/__init__.py:593 +msgid "Comma-separated integers" +msgstr "Heltall adskilt med komma" + +#: db/models/fields/__init__.py:607 +msgid "Date (without time)" +msgstr "Dato (uten tid)" + +#: db/models/fields/__init__.py:611 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Oppgi en gyldig dato på formen ÅÅÅÅ-MM-DD." + +#: db/models/fields/__init__.py:612 +#, python-format +msgid "Invalid date: %s" +msgstr "Ugyldig dato: %s" + +#: db/models/fields/__init__.py:693 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "Oppgi dato og tid på formen ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:695 +msgid "Date (with time)" +msgstr "Dato (med tid)" + +#: db/models/fields/__init__.py:761 +msgid "This value must be a decimal number." +msgstr "Verdien må være et desimaltall." + +#: db/models/fields/__init__.py:763 +msgid "Decimal number" +msgstr "Desimaltall" + +#: db/models/fields/__init__.py:818 +msgid "E-mail address" +msgstr "E-postadresse" + +#: db/models/fields/__init__.py:825 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Filsti" + +#: db/models/fields/__init__.py:848 +msgid "This value must be a float." +msgstr "Verdien må være et flyttall." + +#: db/models/fields/__init__.py:850 +msgid "Floating point number" +msgstr "Flyttall" + +#: db/models/fields/__init__.py:903 +msgid "Big (8 byte) integer" +msgstr "Stort (8 byte) heltall" + +#: db/models/fields/__init__.py:932 +msgid "This value must be either None, True or False." +msgstr "Verdien må være None, True eller False." + +#: db/models/fields/__init__.py:934 +msgid "Boolean (Either True, False or None)" +msgstr "Boolsk (True, False eller None)" + +#: db/models/fields/__init__.py:1025 +msgid "Text" +msgstr "Tekst" + +#: db/models/fields/__init__.py:1041 +msgid "Time" +msgstr "Tid" + +#: db/models/fields/__init__.py:1045 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Oppgi tiden på formen TT:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:1129 +msgid "XML text" +msgstr "XML-tekst" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Modell %(model)s med primærnøkkelen %(pk)r finnes ikke." + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "Fremmednøkkel (type bestemmes av relatert felt)" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "En-til-en-relasjon" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "Mange-til-mange-relasjon" + +#: db/models/fields/related.py:959 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en." + +#: db/models/fields/related.py:1020 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Oppgi gyldige %(self)s-ID-er. Verdien %(value)r er ugyldig." +msgstr[1] "Oppgi gyldige %(self)s-ID-er. Verdiene %(value)r er ugyldige." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Feltet er påkrevet." + +#: forms/fields.py:195 +msgid "Enter a whole number." +msgstr "Oppgi et heltall." + +#: forms/fields.py:225 forms/fields.py:245 +msgid "Enter a number." +msgstr "Oppgi et tall." + +#: forms/fields.py:248 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Verdien kan ikke ha mer enn %s siffer totalt." + +#: forms/fields.py:249 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Verdien kan ikke ha mer enn %s desimaler." + +#: forms/fields.py:250 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Verdien kan ikke ha mer enn %s siffer foran komma." + +#: forms/fields.py:311 forms/fields.py:826 +msgid "Enter a valid date." +msgstr "Oppgi en gyldig dato." + +#: forms/fields.py:339 forms/fields.py:827 +msgid "Enter a valid time." +msgstr "Oppgi et gyldig tidspunkt." + +#: forms/fields.py:365 +msgid "Enter a valid date/time." +msgstr "Oppgi gyldig dato og tidspunkt." + +#: forms/fields.py:423 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Ingen fil ble sendt. Sjekk \"encoding\"-typen på skjemaet." + +#: forms/fields.py:424 +msgid "No file was submitted." +msgstr "Ingen fil ble sendt." + +#: forms/fields.py:425 +msgid "The submitted file is empty." +msgstr "Filen er tom." + +#: forms/fields.py:426 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "Filnavnet kan maksimalt ha %(max)d tegn (det har %(length)d)." + +#: forms/fields.py:461 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Last opp et gyldig bilde. Filen du lastet opp var ødelagt eller ikke et " +"bilde." + +#: forms/fields.py:584 forms/fields.py:659 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene." + +#: forms/fields.py:660 forms/fields.py:722 forms/models.py:986 +msgid "Enter a list of values." +msgstr "Oppgi en liste med verdier." + +#: forms/formsets.py:290 forms/formsets.py:292 +msgid "Order" +msgstr "Rekkefølge" + +#: forms/models.py:547 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Vennligst korriger duplisert data for %(field)s." + +#: forms/models.py:551 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "Vennligst korriger duplisert data for %(field)s, som må være unik." + +#: forms/models.py:557 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"Vennligst korriger duplisert data for %(field_name)s, som må være unik for %" +"(lookup)s i %(date_field)s." + +#: forms/models.py:565 +msgid "Please correct the duplicate values below." +msgstr "Vennligst korriger de dupliserte verdiene nedenfor." + +#: forms/models.py:839 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "Primærnøkkelen er ikke den samme som foreldreinstansens primærnøkkel." + +#: forms/models.py:905 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Velg et gyldig valg. Valget er ikke et av de tilgjengelige valgene." + +#: forms/models.py:987 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Velg et gyldig valg. %s er ikke et av de tilgjengelige valgene." + +#: forms/models.py:989 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "\"%s\" er ikke en gyldig verdi for en primærnøkkel." + +#: template/defaultfilters.py:781 +msgid "yes,no,maybe" +msgstr "ja,nei,kanskje" + +#: template/defaultfilters.py:812 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" + +#: template/defaultfilters.py:814 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:816 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:817 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "midnatt" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "12:00" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "mandag" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "tirsdag" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "onsdag" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "torsdag" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "fredag" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "lørdag" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "søndag" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "man" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "tirs" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "ons" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "tors" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "fre" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "lør" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "søn" + +#: utils/dates.py:18 +msgid "January" +msgstr "januar" + +#: utils/dates.py:18 +msgid "February" +msgstr "februar" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "mars" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "april" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "mai" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "juni" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "juli" + +#: utils/dates.py:19 +msgid "August" +msgstr "august" + +#: utils/dates.py:19 +msgid "September" +msgstr "september" + +#: utils/dates.py:19 +msgid "October" +msgstr "oktober" + +#: utils/dates.py:19 +msgid "November" +msgstr "november" + +#: utils/dates.py:20 +msgid "December" +msgstr "desember" + +#: utils/dates.py:23 +msgid "jan" +msgstr "jan" + +#: utils/dates.py:23 +msgid "feb" +msgstr "feb" + +#: utils/dates.py:23 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:23 +msgid "apr" +msgstr "apr" + +#: utils/dates.py:23 +msgid "may" +msgstr "mai" + +#: utils/dates.py:23 +msgid "jun" +msgstr "jun" + +#: utils/dates.py:24 +msgid "jul" +msgstr "jul" + +#: utils/dates.py:24 +msgid "aug" +msgstr "aug" + +#: utils/dates.py:24 +msgid "sep" +msgstr "sep" + +#: utils/dates.py:24 +msgid "oct" +msgstr "okt" + +#: utils/dates.py:24 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:24 +msgid "dec" +msgstr "des" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "jan." + +#: utils/dates.py:31 +msgid "Feb." +msgstr "feb." + +#: utils/dates.py:32 +msgid "Aug." +msgstr "aug." + +#: utils/dates.py:32 +msgid "Sept." +msgstr "sept." + +#: utils/dates.py:32 +msgid "Oct." +msgstr "okt." + +#: utils/dates.py:32 +msgid "Nov." +msgstr "nov." + +#: utils/dates.py:32 +msgid "Dec." +msgstr "des." + +#: utils/text.py:130 +msgid "or" +msgstr "eller" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "år" +msgstr[1] "år" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "måned" +msgstr[1] "måneder" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "uke" +msgstr[1] "uker" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "dag" +msgstr[1] "dager" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "time" +msgstr[1] "timer" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minutt" +msgstr[1] "minutter" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "minutter" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:512 +msgid "DATE_FORMAT" +msgstr "j. F Y" + +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. F Y H:i" + +#: utils/translation/trans_real.py:514 +msgid "TIME_FORMAT" +msgstr "H:i" + +#: utils/translation/trans_real.py:535 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:536 +msgid "MONTH_DAY_FORMAT" +msgstr "j. F" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s ble opprettet." + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s ble oppdatert." + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s ble slettet." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "En eller flere %(fieldname)s i %(name)s:" + +#~ msgid "Old password:" +#~ msgstr "Gammelt passord:" + +#~ msgid "Relation to parent model" +#~ msgstr "Relasjon til foreldermodell" + +#~ msgid "Add user" +#~ msgstr "Opprett ny bruker" + +#~ msgid "Comment moderation queue" +#~ msgstr "Kommentarmoderasjonskø" + +#~ msgid "No comments to moderate" +#~ msgstr "Ingen kommentarer å moderere" + +#~ msgid "Email" +#~ msgstr "E-post" + +#~ msgid "Authenticated?" +#~ msgstr "Godkjent?" + +#~ msgid "IP Address" +#~ msgstr "IP-adresse" + +#~ msgid "Date posted" +#~ msgstr "Dato lagt inn" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "no" +#~ msgstr "nei" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nb/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/nb/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nb/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nb/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,119 @@ +# Norwegian (Bokmål) translation of Django Javascript +# Copyright (C) 2005 and beyond +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-09 11:51+0100\n" +"PO-Revision-Date: 2010-03-11 18:06+0100\n" +"Last-Translator: Christian Mikalsen and Jon Lønne\n" +"Language-Team: Norsk \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:37 +#, perl-format +msgid "Available %s" +msgstr "Tilgjengelige %s" + +#: contrib/admin/media/js/SelectFilter2.js:45 +msgid "Choose all" +msgstr "Velg alle" + +#: contrib/admin/media/js/SelectFilter2.js:50 +msgid "Add" +msgstr "Ny" + +#: contrib/admin/media/js/SelectFilter2.js:52 +msgid "Remove" +msgstr "Slett" + +#: contrib/admin/media/js/SelectFilter2.js:57 +#, perl-format +msgid "Chosen %s" +msgstr "Valgte %s" + +#: contrib/admin/media/js/SelectFilter2.js:58 +msgid "Select your choice(s) and click " +msgstr "Velg ditt valg og klikk " + +#: contrib/admin/media/js/SelectFilter2.js:63 +msgid "Clear all" +msgstr "Fjern alle" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Januar Februar Mars April Mai Juni Juli August September Oktober November " +"Desember" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "S M T O T F L" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Vis" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Skjul" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:50 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Now" +msgstr "Nå" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:54 +msgid "Clock" +msgstr "Klokke" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Choose a time" +msgstr "Velg et klokkeslett" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 +msgid "Midnight" +msgstr "Midnatt" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +msgid "6 a.m." +msgstr "06:00" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +msgid "Noon" +msgstr "12:00" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:92 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 +msgid "Cancel" +msgstr "Avbryt" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 +msgid "Today" +msgstr "I dag" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 +msgid "Calendar" +msgstr "Kalender" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Yesterday" +msgstr "I går" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Tomorrow" +msgstr "I morgen" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nb/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nb/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nb/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,34 @@ +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j. F Y H:i' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y H:i' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%j.%m.%Y', '%j.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' + '%Y-%m-%j', # '2006-10-25', + # '%j. %b %Y', '%j %b %Y', # '25. okt 2006', '25 okt 2006' + # '%j. %b. %Y', '%j %b. %Y', # '25. okt. 2006', '25 okt. 2006' + # '%j. %B %Y', '%j %B %Y', # '25. oktober 2006', '25 oktober 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%Y-%m-%j', # '2006-10-25' + '%j.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%j.%m.%Y %H:%M', # '25.10.2006 14:30' + '%j.%m.%Y', # '25.10.2006' + '%j.%m.%y %H:%M:%S', # '25.10.06 14:30:59' + '%j.%m.%y %H:%M', # '25.10.06 14:30' + '%j.%m.%y', # '25.10.06' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nl/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/nl/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nl/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/nl/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/nl/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-08 15:34+0200\n" +"POT-Creation-Date: 2009-08-08 09:21+0200\n" "PO-Revision-Date: 2008-08-28 13:58+0100\n" "Last-Translator: Rudolph Froger \n" "Language-Team: \n" @@ -224,7 +224,7 @@ msgid "Successfully deleted %(count)d %(items)s." msgstr "%(count)d %(items)s succesvol verwijderd." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1025 +#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 msgid "Are you sure?" msgstr "Weet u het zeker?" @@ -322,7 +322,7 @@ #: contrib/admin/options.py:519 contrib/admin/options.py:529 #: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:587 +#: forms/models.py:600 msgid "and" msgstr "en" @@ -345,69 +345,69 @@ msgid "No fields changed." msgstr "Geen velden gewijzigd." -#: contrib/admin/options.py:598 contrib/auth/admin.py:67 +#: contrib/admin/options.py:599 contrib/auth/admin.py:67 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "De %(name)s \"%(obj)s\" is toegevoegd." -#: contrib/admin/options.py:602 contrib/admin/options.py:635 +#: contrib/admin/options.py:603 contrib/admin/options.py:636 #: contrib/auth/admin.py:75 msgid "You may edit it again below." msgstr "U kunt dit hieronder weer bewerken." -#: contrib/admin/options.py:612 contrib/admin/options.py:645 +#: contrib/admin/options.py:613 contrib/admin/options.py:646 #, python-format msgid "You may add another %s below." msgstr "U kunt hieronder de volgende %s toevoegen." -#: contrib/admin/options.py:633 +#: contrib/admin/options.py:634 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd." -#: contrib/admin/options.py:641 +#: contrib/admin/options.py:642 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen." -#: contrib/admin/options.py:772 +#: contrib/admin/options.py:773 #, python-format msgid "Add %s" msgstr "Toevoegen %s" -#: contrib/admin/options.py:803 contrib/admin/options.py:1003 +#: contrib/admin/options.py:804 contrib/admin/options.py:1005 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s object met primaire sleutel %(key)r bestaat niet." -#: contrib/admin/options.py:860 +#: contrib/admin/options.py:861 #, python-format msgid "Change %s" msgstr "Wijzig %s" -#: contrib/admin/options.py:904 +#: contrib/admin/options.py:905 msgid "Database error" msgstr "Databasefout" -#: contrib/admin/options.py:940 +#: contrib/admin/options.py:941 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s is succesvol gewijzigd." msgstr[1] "%(count)s %(name)s zijn succesvol gewijzigd." -#: contrib/admin/options.py:1018 +#: contrib/admin/options.py:1020 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "De verwijdering van %(name)s \"%(obj)s\" is geslaagd." -#: contrib/admin/options.py:1054 +#: contrib/admin/options.py:1057 #, python-format msgid "Change history: %s" msgstr "Wijzigingsgeschiedenis: %s" -#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14 +#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 #: contrib/auth/forms.py:80 msgid "" "Please enter a correct username and password. Note that both fields are case-" @@ -416,11 +416,11 @@ "Voer een correcte gebruikersnaam en wachtwoord in. Let op, de velden zijn " "hoofdletter-gevoelig." -#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Uw sessie is verlopen, meld u opnieuw aan." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -428,27 +428,27 @@ "Het lijkt erop dat uw browser geen cookies accepteert. Zet het gebruik van " "cookies aan in uw browser, laad deze pagina nogmaals en probeer het opnieuw." -#: contrib/admin/sites.py:301 contrib/admin/sites.py:307 +#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Gebruikersnamen mogen geen '@' teken bevatten." -#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Uw e-mailadres is niet uw gebruikersnaam. Probeer '%s' eens." -#: contrib/admin/sites.py:360 +#: contrib/admin/sites.py:367 msgid "Site administration" msgstr "Sitebeheer" -#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Inloggen" -#: contrib/admin/sites.py:417 +#: contrib/admin/sites.py:426 #, python-format msgid "%s administration" msgstr "%s beheer" @@ -498,7 +498,7 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:31 +#: contrib/admin/templates/admin/base.html:54 #: contrib/admin/templates/admin/change_form.html:17 #: contrib/admin/templates/admin/change_list.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:6 @@ -543,7 +543,7 @@ #: contrib/admin/templates/admin/actions.html:4 msgid "Go" -msgstr "Zoek" +msgstr "Voer Uit" #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 @@ -551,18 +551,18 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Welkom," -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentatie" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:40 #: contrib/admin/templates/admin/auth/user/change_password.html:14 #: contrib/admin/templates/admin/auth/user/change_password.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 @@ -570,7 +570,7 @@ msgid "Change password" msgstr "Wachtwoord wijzigen" -#: contrib/admin/templates/admin/base.html:26 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 msgid "Log out" @@ -659,8 +659,8 @@ "objects:" msgstr "" "Het verwijderen van %(object_name)s zal ook gerelateerde objecten " -"verwijderen. Echter, u heeft geen rechten om de volgende typen objecten " -"te verwijderen:" +"verwijderen. Echter, u heeft geen rechten om de volgende typen objecten te " +"verwijderen:" #: contrib/admin/templates/admin/delete_selected_confirmation.html:22 #, python-format @@ -668,8 +668,8 @@ "Are you sure you want to delete the selected %(object_name)s objects? All of " "the following objects and it's related items will be deleted:" msgstr "" -"Weet u zeker dat u %(object_name)s objecten wilt verwijderen? " -"Alle volgende objecten worden verwijderd:" +"Weet u zeker dat u %(object_name)s objecten wilt verwijderen? Alle volgende " +"objecten worden verwijderd:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -752,6 +752,11 @@ msgid "Show all" msgstr "Alles tonen" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Opslaan" + #: contrib/admin/templates/admin/search_form.html:8 msgid "Search" msgstr "Zoek" @@ -768,10 +773,6 @@ msgid "%(full_result_count)s total" msgstr "%(full_result_count)s totaal" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Opslaan" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Opslaan als nieuw item" @@ -997,144 +998,145 @@ msgid "template" msgstr "sjabloon" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "tag:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filter:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "view:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Toepassing %r niet gevonden" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Model %(model_name)r niet gevonden in toepassing %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "het gerelateerde `%(app_label)s.%(data_type)s` object" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "gerelateerde `%(app_label)s.%(object_name)s` objecten" -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "alle %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "aantal %s" -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Velden van %s objecten" -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 +#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 +#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 +#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 msgid "Integer" msgstr "Geheel getal" -#: contrib/admindocs/views.py:316 +#: contrib/admindocs/views.py:335 msgid "Boolean (Either True or False)" msgstr "Boolean (True danwel False)" -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 +#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 #, python-format msgid "String (up to %(max_length)s)" msgstr "Karakterreeks (hooguit %(max_length)s)" -#: contrib/admindocs/views.py:318 +#: contrib/admindocs/views.py:337 msgid "Comma-separated integers" msgstr "Komma-gescheiden gehele getallen" -#: contrib/admindocs/views.py:319 +#: contrib/admindocs/views.py:338 msgid "Date (without time)" msgstr "Datum (zonder tijd)" -#: contrib/admindocs/views.py:320 +#: contrib/admindocs/views.py:339 msgid "Date (with time)" msgstr "Datum (met tijd)" -#: contrib/admindocs/views.py:321 +#: contrib/admindocs/views.py:340 msgid "Decimal number" msgstr "Decimaal getal" -#: contrib/admindocs/views.py:322 +#: contrib/admindocs/views.py:341 msgid "E-mail address" msgstr "E-mailadres" -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 +#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 +#: contrib/admindocs/views.py:346 msgid "File path" msgstr "Bestandspad" -#: contrib/admindocs/views.py:325 +#: contrib/admindocs/views.py:344 msgid "Floating point number" msgstr "Decimaal getal" -#: contrib/admindocs/views.py:329 contrib/comments/models.py:60 +#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 msgid "IP address" msgstr "IP-adres" -#: contrib/admindocs/views.py:331 +#: contrib/admindocs/views.py:350 msgid "Boolean (Either True, False or None)" msgstr "Boolean (True, False of None)" -#: contrib/admindocs/views.py:332 +#: contrib/admindocs/views.py:351 msgid "Relation to parent model" msgstr "Relatie tot oudermodel" -#: contrib/admindocs/views.py:333 +#: contrib/admindocs/views.py:352 msgid "Phone number" msgstr "Telefoonnummer" -#: contrib/admindocs/views.py:338 +#: contrib/admindocs/views.py:357 msgid "Text" msgstr "Tekst" -#: contrib/admindocs/views.py:339 +#: contrib/admindocs/views.py:358 msgid "Time" msgstr "Tijd" -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95 +#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 #: contrib/comments/templates/comments/moderation_queue.html:37 #: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admindocs/views.py:341 +#: contrib/admindocs/views.py:360 msgid "U.S. state (two uppercase letters)" msgstr "Staat van de VS (twee hoofdletters)" -#: contrib/admindocs/views.py:342 +#: contrib/admindocs/views.py:361 msgid "XML text" msgstr "XML-tekst" -#: contrib/admindocs/views.py:368 +#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s lijkt geen urlpattern-object te zijn" @@ -1361,7 +1363,7 @@ "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." msgstr "" -"Gebruik '[algo]$[salt]$[hexdigest]' of gebruik hetwachtwoord wijzigen formulier." #: contrib/auth/models.py:133 @@ -1530,8 +1532,8 @@ "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Vink dit vak aan indien de opmerking niet gepast is. Een \"Dit commentaar " -"is verwijderd\" bericht wordt dan getoond." +"Vink dit vak aan indien de opmerking niet gepast is. Een \"Dit commentaar is " +"verwijderd\" bericht wordt dan getoond." #: contrib/comments/models.py:77 msgid "comments" @@ -1607,7 +1609,8 @@ msgid "" "Thanks for taking the time to improve the quality of discussion on our site" msgstr "" -"Bedankt dat u de tijd heeft genomen om de kwaliteit van de discussie op onze site te verbeteren" +"Bedankt dat u de tijd heeft genomen om de kwaliteit van de discussie op onze " +"site te verbeteren" #: contrib/comments/templates/comments/delete.html:4 msgid "Remove a comment" @@ -2190,12 +2193,12 @@ #: contrib/localflavor/cz/forms.py:47 msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "" -"Geef een geboorte nummer op in het formaat XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Geef een geboorte nummer op in het formaat XXXXXX/XXXX or XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:48 msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Ongeldige optionele parameter Geslacht, geldige waarden zijn 'f' en 'm'" +msgstr "" +"Ongeldige optionele parameter Geslacht, geldige waarden zijn 'f' en 'm'" #: contrib/localflavor/cz/forms.py:49 msgid "Enter a valid birth number." @@ -3035,7 +3038,8 @@ #: contrib/localflavor/pl/forms.py:109 msgid "National Business Register Number (REGON) consists of 9 or 14 digits." msgstr "" -"Het Nationaal Zakelijk Registratie Nummer (REGON) bestaat uit 9 of 14 cijfers." +"Het Nationaal Zakelijk Registratie Nummer (REGON) bestaat uit 9 of 14 " +"cijfers." #: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -3883,7 +3887,7 @@ msgid "This value must be an integer." msgstr "De waarde moet een geheel getal zijn." -#: db/models/fields/__init__.py:3883918 +#: db/models/fields/__init__.py:388 msgid "This value must be either True or False." msgstr "De waarde moet of True (Waar) of False (Onwaar) zijn." @@ -3912,8 +3916,8 @@ msgid "This value must be a decimal number." msgstr "De waarde moet een decimaal getal zijn." +# Choose 'kommagetal' because it's user input. #: db/models/fields/__init__.py:686 -# Choose 'kommagetal' because it's user input. msgid "This value must be a float." msgstr "De waarde moet een kommagetal zijn." @@ -3925,14 +3929,14 @@ msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Geef een geldige tijd in UU:MM[:ss[.uuuuuu]] formaat." -#: db/models/fields/related.py:792 +#: db/models/fields/related.py:816 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Houd \"Control\", of \"Command\" op een Mac, ingedrukt om meerdere te " "selecteren." -#: db/models/fields/related.py:870 +#: db/models/fields/related.py:894 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3952,15 +3956,15 @@ #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." msgstr "" -"Zorg ervoor dat waarde korter is dan %(max)d tekens (huidige lengte " -"%(length)d)." +"Zorg ervoor dat waarde korter is dan %(max)d tekens (huidige lengte %(length)" +"d)." #: forms/fields.py:139 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "" -"Zorg ervoor dat deze tekst langer is dan %(min)d tekens (huidige lengte " -"%(length)d)." +"Zorg ervoor dat deze tekst langer is dan %(min)d tekens (huidige lengte %" +"(length)d)." #: forms/fields.py:166 msgid "Enter a whole number." @@ -4026,7 +4030,8 @@ msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "" -"De bestandsnaam mag maximaal %(max)d karakters bevatten (dit zijn er nu %(length)d)." +"De bestandsnaam mag maximaal %(max)d karakters bevatten (dit zijn er nu %" +"(length)d)." #: forms/fields.py:483 msgid "" @@ -4049,7 +4054,7 @@ msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Selecteer een geldige keuze. %(value)s is geen beschikbare keuze." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:962 +#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 msgid "Enter a list of values." msgstr "Geef een lijst op met waardes." @@ -4078,43 +4083,45 @@ msgid "%(model_name)s with this %(field_label)s already exists." msgstr "Er bestaat al een %(model_name)s met eenzelfde %(field_label)s." -#: forms/models.py:581 +#: forms/models.py:594 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Verbeter de dubbele gegevens voor %(field)s." -#: forms/models.py:585 +#: forms/models.py:598 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Verbeter de dubbele gegevens voor %(field)s, welke uniek moet zijn." -#: forms/models.py:591 +#: forms/models.py:604 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." -msgstr "Verbeter de dubbele gegevens voor %(field_name)s, welke uniek moet " -"zijn voor de %(lookup)s in %(date_field)s." - -#: forms/models.py:599 +msgstr "" +"Verbeter de dubbele gegevens voor %(field_name)s, welke uniek moet zijn voor " +"de %(lookup)s in %(date_field)s." + +#: forms/models.py:612 msgid "Please correct the duplicate values below." msgstr "Verbeter de dubbele waarden hieronder." -#: forms/models.py:837 +#: forms/models.py:867 msgid "The inline foreign key did not match the parent instance primary key." -msgstr "De secundaire sleutel komt niet overeen met de primaire sleutel van " -"de bovenliggende instantie." - -#: forms/models.py:892 +msgstr "" +"De secundaire sleutel komt niet overeen met de primaire sleutel van de " +"bovenliggende instantie." + +#: forms/models.py:930 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Selecteer een geldige keuze. Deze keuze is niet beschikbaar." -#: forms/models.py:963 +#: forms/models.py:1004 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Selecteer een geldige keuze. %s is geen beschikbare keuze." -#: forms/models.py:965 +#: forms/models.py:1006 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" is geen geldige waarde voor een primaire sleutel." @@ -4145,27 +4152,27 @@ msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "p.m." -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "a.m." -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "PM" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "AM" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "middernacht" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" msgstr "middag" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nl/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nl/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nl/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,48 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' # '20 januari 2009' +TIME_FORMAT = 'H:i' # '15:23' +DATETIME_FORMAT = 'j F Y H:i' # '20 januari 2009 15:23' +YEAR_MONTH_FORMAT = 'F Y' # 'januari 2009' +MONTH_DAY_FORMAT = 'j F' # '20 januari' +SHORT_DATE_FORMAT = 'j-n-Y' # '20-1-2009' +SHORT_DATETIME_FORMAT = 'j-n-Y H:i' # '20-1-2009 15:23' +FIRST_DAY_OF_WEEK = 1 # Monday (in Dutch 'maandag') +DATE_INPUT_FORMATS = ( + '%d-%m-%Y', '%d-%m-%y', '%Y-%m-%d', # '20-01-2009', '20-01-09', '2009-01-20' + # '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09' + # '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 09' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '15:23:35' + '%H.%M:%S', # '15.23:35' + '%H.%M', # '15.23' + '%H:%M', # '15:23' +) +DATETIME_INPUT_FORMATS = ( + # With time in %H:%M:%S : + '%d-%m-%Y %H:%M:%S', '%d-%m-%y %H:%M:%S', '%Y-%m-%d %H:%M:%S', # '20-01-2009 15:23:35', '20-01-09 15:23:35', '2009-01-20 15:23:35' + # '%d %b %Y %H:%M:%S', '%d %b %y %H:%M:%S', # '20 jan 2009 15:23:35', '20 jan 09 15:23:35' + # '%d %B %Y %H:%M:%S', '%d %B %y %H:%M:%S', # '20 januari 2009 15:23:35', '20 januari 2009 15:23:35' + # With time in %H.%M:%S : + '%d-%m-%Y %H.%M:%S', '%d-%m-%y %H.%M:%S', # '20-01-2009 15.23:35', '20-01-09 15.23:35' + # '%d %b %Y %H.%M:%S', '%d %b %y %H.%M:%S', # '20 jan 2009 15.23:35', '20 jan 09 15.23:35' + # '%d %B %Y %H.%M:%S', '%d %B %y %H.%M:%S', # '20 januari 2009 15.23:35', '20 januari 2009 15.23:35' + # With time in %H:%M : + '%d-%m-%Y %H:%M', '%d-%m-%y %H:%M', '%Y-%m-%d %H:%M', # '20-01-2009 15:23', '20-01-09 15:23', '2009-01-20 15:23' + # '%d %b %Y %H:%M', '%d %b %y %H:%M', # '20 jan 2009 15:23', '20 jan 09 15:23' + # '%d %B %Y %H:%M', '%d %B %y %H:%M', # '20 januari 2009 15:23', '20 januari 2009 15:23' + # With time in %H.%M : + '%d-%m-%Y %H.%M', '%d-%m-%y %H.%M', # '20-01-2009 15.23', '20-01-09 15.23' + # '%d %b %Y %H.%M', '%d %b %y %H.%M', # '20 jan 2009 15.23', '20 jan 09 15.23' + # '%d %B %Y %H.%M', '%d %B %y %H.%M', # '20 januari 2009 15.23', '20 januari 2009 15.23' + # Without time : + '%d-%m-%Y', '%d-%m-%y', '%Y-%m-%d', # '20-01-2009', '20-01-09', '2009-01-20' + # '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09' + # '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 2009' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nn/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/nn/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nn/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nn/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5205 @@ +# translation of django.po to norwegian nynorsk +# Copyright (C) 2005 and beyond +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-28 17:42+0200\n" +"PO-Revision-Date: 2010-03-04 12:13+0200\n" +"Last-Translator: Håvard Grimelid\n" +"Language-Team: Norsk nynorsk \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "Arabisk" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Bulgarsk" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "Bengalsk" + +#: conf/global_settings.py:47 +#, fuzzy +msgid "Bosnian" +msgstr "Estisk" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Katalansk" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "Tsjekkisk" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "Walisisk" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dansk" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "Tysk" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "Gresk" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "Engelsk" + +#: conf/global_settings.py:55 +msgid "Spanish" +msgstr "Spansk" + +#: conf/global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "Argentinsk spansk" + +#: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Estisk" + +#: conf/global_settings.py:58 +msgid "Basque" +msgstr "Baskisk" + +#: conf/global_settings.py:59 +msgid "Persian" +msgstr "Persisk" + +#: conf/global_settings.py:60 +msgid "Finnish" +msgstr "Finsk" + +#: conf/global_settings.py:61 +msgid "French" +msgstr "Fransk" + +#: conf/global_settings.py:62 +#, fuzzy +msgid "Frisian" +msgstr "Friesland" + +#: conf/global_settings.py:63 +msgid "Irish" +msgstr "Irsk" + +#: conf/global_settings.py:64 +msgid "Galician" +msgstr "Galisisk" + +#: conf/global_settings.py:65 +msgid "Hebrew" +msgstr "Hebraisk" + +#: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hindi" + +#: conf/global_settings.py:67 +msgid "Croatian" +msgstr "Kroatisk" + +#: conf/global_settings.py:68 +msgid "Hungarian" +msgstr "Ungarsk" + +#: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Islandsk" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Italiensk" + +#: conf/global_settings.py:71 +msgid "Japanese" +msgstr "Japansk" + +#: conf/global_settings.py:72 +msgid "Georgian" +msgstr "Georgisk" + +#: conf/global_settings.py:73 +msgid "Khmer" +msgstr "Khmer" + +#: conf/global_settings.py:74 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:75 +msgid "Korean" +msgstr "Koreansk" + +#: conf/global_settings.py:76 +msgid "Lithuanian" +msgstr "Litauisk" + +#: conf/global_settings.py:77 +msgid "Latvian" +msgstr "Latvisk" + +#: conf/global_settings.py:78 +msgid "Macedonian" +msgstr "Makedonsk" + +#: conf/global_settings.py:79 +msgid "Dutch" +msgstr "Nederlandsk" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "Norsk" + +#: conf/global_settings.py:81 +msgid "Polish" +msgstr "Polsk" + +#: conf/global_settings.py:82 +msgid "Portuguese" +msgstr "Portugisisk" + +#: conf/global_settings.py:83 +msgid "Brazilian Portuguese" +msgstr "Brasiliansk portugisisk" + +#: conf/global_settings.py:84 +msgid "Romanian" +msgstr "Rumensk" + +#: conf/global_settings.py:85 +msgid "Russian" +msgstr "Russisk" + +#: conf/global_settings.py:86 +msgid "Slovak" +msgstr "Slovakisk" + +#: conf/global_settings.py:87 +msgid "Slovenian" +msgstr "Slovensk" + +#: conf/global_settings.py:88 +#, fuzzy +msgid "Albanian" +msgstr "Alicante" + +#: conf/global_settings.py:89 +msgid "Serbian" +msgstr "Serbisk" + +#: conf/global_settings.py:90 +#, fuzzy +msgid "Serbian Latin" +msgstr "Serbisk" + +#: conf/global_settings.py:91 +msgid "Swedish" +msgstr "Svensk" + +#: conf/global_settings.py:92 +msgid "Tamil" +msgstr "Tamil" + +#: conf/global_settings.py:93 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:94 +msgid "Thai" +msgstr "Thai" + +#: conf/global_settings.py:95 +msgid "Turkish" +msgstr "Tyrkisk" + +#: conf/global_settings.py:96 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: conf/global_settings.py:97 +#, fuzzy +msgid "Vietnamese" +msgstr "Wien" + +#: conf/global_settings.py:98 +msgid "Simplified Chinese" +msgstr "Simplifisert kinesisk" + +#: conf/global_settings.py:99 +msgid "Traditional Chinese" +msgstr "Tradisjonell kinesisk" + +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "Sletta %(count)d %(items)s." + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 +msgid "Are you sure?" +msgstr "Er du sikker?" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Slett valgte %(verbose_name_plural)s" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

                            By %s:

                            \n" +"
                              \n" +msgstr "" +"

                              Etter %s:

                              \n" +"
                                \n" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "Alle" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "Når som helst" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "I dag" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "Siste sju dager" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "Denne månaden" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "I år" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "Yes" +msgstr "Ja" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "No" +msgstr "Nei" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 +msgid "Unknown" +msgstr "Ukjend" + +#: contrib/admin/helpers.py:20 +msgid "Action:" +msgstr "Handling:" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "tid for handling" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "objekt-ID" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "objekt repr" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "handlingsflagg" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "endre melding" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "logginnlegg" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "logginnlegg" + +#: contrib/admin/options.py:142 contrib/admin/options.py:157 +msgid "None" +msgstr "Ingen" + +#: contrib/admin/options.py:563 +#, python-format +msgid "Changed %s." +msgstr "Endra %s." + +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 +msgid "and" +msgstr "og" + +#: contrib/admin/options.py:568 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "Oppretta %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:572 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "Endra %(list)s for %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:577 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "Sletta %(name)s \"%(object)s\"." + +#: contrib/admin/options.py:581 +msgid "No fields changed." +msgstr "Ingen felt endra." + +#: contrib/admin/options.py:647 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" vart oppretta." + +#: contrib/admin/options.py:651 contrib/admin/options.py:684 +msgid "You may edit it again below." +msgstr "Du kan redigere vidare nedanfor." + +#: contrib/admin/options.py:661 contrib/admin/options.py:694 +#, python-format +msgid "You may add another %s below." +msgstr "Du kan opprette ny %s nedanfor." + +#: contrib/admin/options.py:682 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" vart endra." + +#: contrib/admin/options.py:690 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" vart endra Du kan redigere vidare nedanfor." + +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:762 +#, fuzzy +msgid "No action selected." +msgstr "tid for handling" + +#: contrib/admin/options.py:842 +#, python-format +msgid "Add %s" +msgstr "Opprett %s" + +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s-objekt med primærnøkkelen %(key)r finst ikkje." + +#: contrib/admin/options.py:933 +#, python-format +msgid "Change %s" +msgstr "Rediger %s" + +#: contrib/admin/options.py:978 +msgid "Database error" +msgstr "Databasefeil" + +#: contrib/admin/options.py:1014 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "%(count)s %(name)s vart endra." +msgstr[1] "%(count)s %(name)s vart endra." + +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: contrib/admin/options.py:1093 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" vart sletta." + +#: contrib/admin/options.py:1130 +#, python-format +msgid "Change history: %s" +msgstr "Endringshistorikk: %s" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Gje korrekt brukarnamn og passord. Merk at det er forskjell på små og store " +"bokstavar." + +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "Økta har tidsavbrot, logg inn att." + +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Det ser ut til at nettlesaren din ikkje støttar informasjonskapslar " +"(cookies). Konfigurer nettlesaren din og prøv omatt." + +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "Brukarnamnet kan ikkje innehalde teiknet '@'." + +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "E-postadressa er ikkje brukarnamnet ditt, prøv '%s' istadenfor." + +#: contrib/admin/sites.py:393 +msgid "Site administration" +msgstr "Nettstadsadministrasjon" + +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "Logg inn" + +#: contrib/admin/sites.py:452 +#, python-format +msgid "%s administration" +msgstr "%s-administrasjon" + +#: contrib/admin/widgets.py:75 +msgid "Date:" +msgstr "Dato:" + +#: contrib/admin/widgets.py:75 +msgid "Time:" +msgstr "Tid:" + +#: contrib/admin/widgets.py:99 +msgid "Currently:" +msgstr "No:" + +#: contrib/admin/widgets.py:99 +msgid "Change:" +msgstr "Endre:" + +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "Oppslag" + +#: contrib/admin/widgets.py:244 +msgid "Add Another" +msgstr "Legg til ny" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Fann ikkje sida" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Sida du spør etter finst ikkje." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Heim" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Tenarfeil" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Tenarfeil (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Tenarfeil (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 "" +"Det har oppstått ein feil. Feilen er rapportert til administrator via e-" +"post, og vil bli fiksa snart. " + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "Utfør den valde handlinga" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Gå" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/base.html:28 +msgid "Welcome," +msgstr "Velkommen," + +#: contrib/admin/templates/admin/base.html:33 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Dokumentasjon" + +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "Endre passord" + +#: contrib/admin/templates/admin/base.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "Logg ut" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django administrasjonsside" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django-administrasjon" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "Opprett" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "Historikk" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "Vis på nettstad" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Korriger feilen under." +msgstr[1] "Korriger feila under." + +#: contrib/admin/templates/admin/change_list.html:63 +#, python-format +msgid "Add %(name)s" +msgstr "Opprett %(name)s" + +#: contrib/admin/templates/admin/change_list.html:82 +msgid "Filter" +msgstr "Filtrering" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 +msgid "Delete" +msgstr "Slett" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Dersom du slettar %(object_name)s '%(escaped_object)s', vil også slette " +"relaterte objekt, men du har ikkje løyve til å slette følgande objekttypar:" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Er du sikker på at du vil slette %(object_name)s \"%(escaped_object)s\"? " +"Alle dei følgjande relaterte objekta vil bli sletta:" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "Ja, eg er sikker" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "Slett fleire objekt" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"Sletting av %(object_name)s vil også slette relaterte objekt, men du har " +"ikkje løyve til å slette følgjande objekttypar:" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, fuzzy, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Er du sikker på at du vil slette desse %(object_name)s-objekta? Dei " +"følgjande objekta og deira relaterte objekt vil bli sletta:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "Etter %(filter_title)s " + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modellar tilgjengeleg i %(name)s-applikasjonen." + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "Endre" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "Du har ikkje løyve til å redigere noko." + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "Siste handlingar" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "Mine handlingar" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "Ingen tilgjengelege" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "Ukjent innhald" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Noko er gale med databaseinstallasjonen din. Syt for at databasetabellane er " +"oppretta og at brukaren har dei naudsynte løyve." + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "Brukarnamn:" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "Passord:" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "Dato/tid" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "Brukar" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "Handling" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Dette objektet har ingen endringshistorikk. Det var sannsynlegvis ikkje " +"oppretta med administrasjonssida." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Vis alle" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Lagre" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "Søk" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "Ett resultat" +msgstr[1] "%(counter)s resultat" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s totalt" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "Lagre som ny" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "Lagre og opprett ny" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "Lagre og hald fram å redigere" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Skriv først inn brukernamn og passord. Deretter vil du få høve til å endre " +"fleire brukarinnstillingar." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Skriv inn eit nytt passord for brukaren %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Passord" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Passord (gjenta)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Skriv inn det samme passordet som over, for verifisering." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, fuzzy, python-format +msgid "Add another %(verbose_name)s" +msgstr "%(verbose_name)s vart sletta." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Fjern" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "Slette?" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Takk for at du brukte kvalitetstid på nettstaden i dag." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Logg inn att" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "Endre passord" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Passord endra" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Passordet ditt vart endret." + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" +"Av sikkerheitsgrunnar må du oppgje det gamle passordet ditt. Oppgje så det " +"nye passordet ditt to gonger, slik at vi kan kontrollere at det er korrekt." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Gammalt passord" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nytt passord" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "Endre passord" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Nullstill passord" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "Passord nullstilt" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Passordet ditt er sett. Du kan logge inn." + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "Stadfesting på nullstilt passord" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "Oppgje nytt passord" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Oppgje det nye passordet ditt to gonger, for å sikre at du oppgjev det " +"korrekt." + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nytt passord:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Gjenta nytt passord:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "Passordet vart ikkje nullstilt" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Nullstillingslinken er ugyldig, kanskje fordi den allereie har vore brukt. " +"Nullstill passordet ditt på nytt." + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Passordet vart nullstilt" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Vi har sendt deg ein e-post med instruksjonar for nullstilling av passord. " +"Du bør motta den om kort tid." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" +"Du har mottatt denne e-posten fordi du har bedt om nullstilling av passordet " +"ditt" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "for kontoen din på %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "Gå til følgjande side og velg eit nytt passord:" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "Brukarnamnet ditt, i tilfelle du har gløymt det:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "Takk for at du brukar sida vår!" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "Helsing %(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 e-mail " +"instructions for setting a new one." +msgstr "" +"Har du gløymt passordet ditt? Oppgje e-postadressa di under, så sender vi " +"deg ein e-post med instruksjonar for nullstilling av passord." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-postadresse:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Nullstill passordet" + +#: contrib/admin/templatetags/admin_list.py:239 +msgid "All dates" +msgstr "Alle datoar" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "Velg %s" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "Velg %s du ønskar å redigere" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "nettstad" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "mal" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "tag:" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "filter:" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "view:" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "Kunne ikkje finne applikasjonen %r" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "" +"Kunne ikkje finne modellen %(model_name)r i applikasjonen %(app_label)r" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "det relaterte `%(app_label)s.%(data_type)s`-objektet" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "modell:" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "relaterte `%(app_label)s.%(object_name)s`-objekt" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "alle %s" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "tal på %s" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "Felt på %s-objekt" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ser ikkje ut til å vere eit urlpattern-objekt" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Bokmerke" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "Dokumentasjonsbokmerke" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

                                To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                                \n" +msgstr "" +"\n" +"

                                For å installere bokmerke, dra linken til verktøylinja\n" +"for bokmerke, eller høgreklikk og legg til i bokmerke. No kan du du velge\n" +"bokmerket frå kva som helst side på nettstaden. Nokre av desse\n" +"bokmerka krevar at datamaskina du brukar er markert som \"intern\"\n" +"(kontakt systemadministratoren din dersom du er usikker på om maskina di er " +"\"intern\").

                                \n" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "Dokumentasjon for denne sida" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Hopp frå kva som helst side til dokumentasjonen for visingsfunksjonen som " +"genererte sida." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Vis objekt-ID" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Viser \"content-type\" og ein unik ID for sider som representerar eit enkelt " +"objekt." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Endre dette objektet (noverande vindauge)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Hoppar til administrasjonssida for sider som representerer eit enkelt objekt." + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Endre dette objektet (nytt vindauge)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Samme som over, men opnar administrasjonssida i eit nytt vindauge." + +#: contrib/auth/admin.py:29 +msgid "Personal info" +msgstr "Personleg informasjon" + +#: contrib/auth/admin.py:30 +msgid "Permissions" +msgstr "Løyve" + +#: contrib/auth/admin.py:31 +msgid "Important dates" +msgstr "Viktige datoar" + +#: contrib/auth/admin.py:32 +msgid "Groups" +msgstr "Grupper" + +#: contrib/auth/admin.py:114 +msgid "Password changed successfully." +msgstr "Passordet er endra." + +#: contrib/auth/admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "Endre passord: %s" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Brukarnamn" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +#, fuzzy +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Nødvendig. 30 teikn eller færre. Berre alfanumeriske tegn (bokstavar, tall " +"og understrekar)." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +#, fuzzy +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Feltet kan berre innehalde bokstavar, nummer og understrekar." + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "Stadfesting av passord" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "Det eksisterar allereie ein brukar med dette brukernamnet." + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "Dei to passordfelta er ikkje like." + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "Denne kontoen er inaktiv." + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Nettlesaren din ser ikkje ut til å støtte informasjonskapslar (cookies). " +"Informasjonskapslar er nødvendige for å logge inn." + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "E-post" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Den oppgitte e-postadressa er ikkje registrert hos oss. Er du sikker på at " +"du er registrert?" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "Nullstilling av passord på %s" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "Stadfest nytt passord" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Det gamle passordet er feil. Prøv omatt." + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "namn" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "kodenamn" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "løyve" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "løyve" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "gruppe" + +#: contrib/auth/models.py:99 contrib/auth/models.py:206 +msgid "groups" +msgstr "grupper" + +#: contrib/auth/models.py:196 +msgid "username" +msgstr "brukarnamn" + +#: contrib/auth/models.py:196 +#, fuzzy +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Nødvendig. 30 teikn eller færre. Berre alfanumeriske tegn (bokstavar, tall " +"og understrekar)." + +#: contrib/auth/models.py:197 +msgid "first name" +msgstr "fornamn" + +#: contrib/auth/models.py:198 +msgid "last name" +msgstr "etternamn" + +#: contrib/auth/models.py:199 +msgid "e-mail address" +msgstr "e-postadresse" + +#: contrib/auth/models.py:200 +msgid "password" +msgstr "passord" + +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Bruk '[algo]$[salt]$[hexdigest]' eller endre passord-" +"skjemaet." + +#: contrib/auth/models.py:201 +msgid "staff status" +msgstr "administrasjonsstatus" + +#: contrib/auth/models.py:201 +msgid "Designates whether the user can log into this admin site." +msgstr "Angir at brukaren kan logge inn på denne administrasjonssida." + +#: contrib/auth/models.py:202 +msgid "active" +msgstr "aktiv" + +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Angir at denne brukaren er aktiv. Avmerk denne i staden for å slette kontoen." + +#: contrib/auth/models.py:203 +msgid "superuser status" +msgstr "superbrukar" + +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Angir at denne brukaren har alle løyve utan å eksplisitt sette dei." + +#: contrib/auth/models.py:204 +msgid "last login" +msgstr "siste innlogging" + +#: contrib/auth/models.py:205 +msgid "date joined" +msgstr "registrert" + +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"I tillegg til dei løyva som vert angitt manuelt, får brukaren òg løyve til " +"gruppene han/hon er med i." + +#: contrib/auth/models.py:208 +msgid "user permissions" +msgstr "Brukerløyve" + +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "brukar" + +#: contrib/auth/models.py:213 +msgid "users" +msgstr "brukarar" + +#: contrib/auth/models.py:394 +msgid "message" +msgstr "melding" + +#: contrib/auth/views.py:79 +msgid "Logged out" +msgstr "Logga ut" + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 +msgid "Enter a valid e-mail address." +msgstr "Oppgje ei gyldig e-postadresse." + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "Innhald" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "Metadata" + +#: contrib/comments/admin.py:40 +#, fuzzy +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "flagg" +msgstr[1] "flagg" + +#: contrib/comments/admin.py:41 +#, fuzzy +msgid "Flag selected comments" +msgstr "Flagg denne kommentaren" + +#: contrib/comments/admin.py:45 +#, fuzzy +msgid "approved" +msgid_plural "approved" +msgstr[0] "Godkjenn" +msgstr[1] "Godkjenn" + +#: contrib/comments/admin.py:46 +#, fuzzy +msgid "Approve selected comments" +msgstr "Tillat ein kommentar" + +#: contrib/comments/admin.py:50 +#, fuzzy +msgid "removed" +msgid_plural "removed" +msgstr[0] "er fjerna" +msgstr[1] "er fjerna" + +#: contrib/comments/admin.py:51 +#, fuzzy +msgid "Remove selected comments" +msgstr "Fjern ein kommentar" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "%(site_name)s - kommentarar" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "Siste kommentarar frå %(site_name)s" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "Namn" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "E-postadresse" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "Nettadresse" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "Kommentar" + +#: contrib/comments/forms.py:175 +#, 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 ikkje lovleg her." +msgstr[1] "Pass munnen din! Orda %s er ikkje lovlege her." + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" +"Dersom du oppgjev noko i dette feltet, vil kommentaren bli behandla som spam" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "innhaldstype" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "objekt-ID" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "brukaren sitt namn" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "brukaren si e-postadresse" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "brukaren si nettadresse" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "kommentar" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "dato/tid for innsending" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "IP-adresse" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "er tilgjengeleg for alle" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "Avmerk denne boksen for å fjerne kommentaren frå sida." + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "er fjerna" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Kryss av denne dersom kommentaren er upassande. Meldinga \"Denne kommentaren " +"har blitt fjerna\" vil bli vist i staden." + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "kommentarar" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" +"Denne kommentaren er skriven av ein innlogga brukar og namnnet kan difor " +"ikkje endrast." + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" +"Denne kommentaren er skriven av ein innlogga brukar og e-postadressa kan " +"derfor ikkje endrast." + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Skrive av %(user)s, %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "flagg" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "dato" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "kommentarflagg" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "kommentarflagg" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "Tillat ein kommentar" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "Gjere denne kommentaren offentleg?" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "Godkjenn" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "Takk for godkjenning" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" +"Takk for at du tok deg tid til å forbetre kvaliteten på diskusjonen på sida " +"vår" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "Fjern ein kommentar" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "Fjerne denne kommentaren?" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "Takk for fjerninga" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "Flagg denne kommentaren" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "Flagg denne kommentaren?" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "Flagg" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "Takk for flagging" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "Publiser" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "Førehandsvising" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "Takk for kommentaren" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "Takk for kommentaren din" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "Førehandsvis kommentaren din" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Korriger feilen under" +msgstr[1] "Korriger feila under" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "Publiser kommentaren din" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "eller gjer endringar" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "python-modell klassenamn" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "innhaldstypar" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Eksempel: '/om/kontakt/'. Kontroller at det er ein skråstrek framfor og bak." + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Dette feltet kan berre innehalde bokstavar, nummer, understrekar, " +"bindestrekar eller skråstrekar." + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "Avanserte innstillingar" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "tittel" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "innhald" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "tillat kommentarer" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "malnamn" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Døme: 'flatpages/kontakt_side.html'. Dersom denne ikkje er gjeve, vil " +"'flatpages/default.html' bli brukt." + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "krevar registrering" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Dersom denne er kryssa av, kan berre innlogga brukarar sjå sida." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "flatside" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "flatsider" + +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Du har brukt for lang tid på å fylle ut skjemaet. Fyll ut skjemaet frå denne " +"sida." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:270 +#, fuzzy +msgid "Point" +msgstr "Publiser" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "" + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "Ingen geometriverdi oppgjeve." + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "Ugyldig geometriverdi" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "Ugyldig geometritype" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" +"Det oppstod ein feil ved transformering av geometrien til SRID frå " +"geometrifeltet." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f million" +msgstr[1] "%(value).1f millionar" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f milliard" +msgstr[1] "%(value).1f milliardar" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f billion" +msgstr[1] "%(value).1f billionar" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "éin" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "to" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "tre" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "fire" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "fem" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "seks" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "sju" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "åtte" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "ni" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "i dag" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "i morgon" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "i går" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Oppgje eit postnummer på forma NNNN eller ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "Feltet krevar berre tall." + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "Feltet krevar 7 eller 8 siffer." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Oppgje gyldig CUIT på forma XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "Ugyldig CUIT." + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "Burgenland" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "Carinthia" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "Niederösterreich" + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "Oberösterreich" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "Salzburg" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "Steiermark" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "Tirol" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "Vorarlberg" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "Wien" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "Oppgje eit postnummer på forma XXXX." + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "Oppgje eit gyldig Østerrisk personnummer på forma XXXX XXXXXX." + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "Oppgje eit firesifra postnummer." + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Oppgje eit postnummer på forma XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefonnummeret må vere på forma XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" +"Velg ein gyldig brasiliansk stat. Den staten er ikkje eit av dei " +"tilgjengelege valga." + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "Ugyldig CPF-nummer." + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Feltet krevar maksimum 11 eller 14 siffer." + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "Ugyldig CNPJ-nummer." + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Feltet krevar minst 14 siffer." + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Oppgje eit postnummer på forma XXX XXX." + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "Oppgje eit gyldig kanadisk personnummer på forma XXX-XXX-XXX." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Innerrhoden" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Ausserrhoden" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Basel-Stadt" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Basel-Landschaft" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Bern" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Genève" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Graubünden" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Luzern" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchâtel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwalden" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwalden" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Solothurn" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "St. Gallen" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Ticino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Wallis" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zürich" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Oppgje eit gyldig sveitsisk identitets- eller passnummer på forma X1234567<0 " +"eller 1234567890." + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "Oppgje eit gyldig chilensk RUT." + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Oppgje eit gyldig chilensk RUT på forma XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "Den chilenske RUT er ugyldig." + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "Praha" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "Sentralbøhmen region" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "Sydbøhmen region" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "Plzeň region" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "Karlovy Vary region" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "Ústí nad Labem region" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "Liberec region" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "Hradec Králové region" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "Pardubice region" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "Žilina-regionen" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "Sydmähriske region" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "Olomouc region" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "Zlín region" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "Mähren-Schlesien region" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Oppgje eit postnummer på forma XXXXX or XXX XX." + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Oppgje eit fødselsnummer på forma XXXXXX/XXXX eller XXXXXXXXXX." + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "Oppgje eit gyldig fødselsnummer." + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "Oppgje eit gyldig IC-nummer." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bayern" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Vorpommern" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Niedersachsen" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Nordrhein-Westfalen" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rheinland-Pfalz" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Saarland" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Sachsen" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Sachsen-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Thüringen" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Oppgje eit postnummer på forma XXXXX." + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Oppgje eit gyldig tysk identitetsnummer på forma XXXXXXXXXXX-XXXXXXX-XXXXXXX-" +"X." + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "Álava" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "Albacete" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "Alicante" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "Almería" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "Ávila" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "Badajoz" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "Balearane" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "Barcelona" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "Burgos" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "Cáceres" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "Cádiz" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "Castellón" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "Ciudad Real" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "Córdoba" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "A Coruna" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "Cuenca" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "Girona" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "Granada" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "Guadalajara" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Gipuzkoa" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "Huelva" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "Huesca" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "Jaén" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "León" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "Lleida" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "La Rioja" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "Lugo" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "Madrid" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "Málaga" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "Murcia" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "Navarra" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "Ourense" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "Asturias" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "Palencia" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "Las Palmas" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "Pontevedra" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "Salamanca" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "Santa Cruz de Tenerife" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "Cantabria" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "Segovia" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "Sevilla" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "Soria" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "Tarragona" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "Teruel" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "Toledo" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "Valencia" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "Valladolid" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "Bizkaia" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "Zamora" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "Zaragoza" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "Ceuta" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "Melilla" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "Andalucía" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "Aragón" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Asturias" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "Balearane" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "Baskarland" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "Kanariøyene" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "Castilla-La Mancha" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "Castilla y León" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "Catalonia" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "Extremadura" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "Galicia" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "Murcia" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Navarra" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "Valenciana" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Oppgje eit gyldig postnummer på forma 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Oppgje eit gyldig telefonnummer på eit av følgjande format: 6XXXXXXXX, " +"8XXXXXXXX eller 9XXXXXXXX." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Oppgje eit gyldig NIF, NIE eller CIF." + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "Oppgje eit gyldig NIF eller NIE." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "Ugyldig kontrollsum for NIF." + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "Ugyldig kontrollsum for NIE." + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "Ugyldig kontrollsum for CIF." + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Oppgje eit gyldig kontonummer på forma XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "Ugyldig kontrollsum for kontonummer." + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "Oppgje eit gyldig finsk personnummer." + +#: contrib/localflavor/fr/forms.py:31 +#, fuzzy +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonnummeret må vere på forma XXXX-XXXXXX." + +#: contrib/localflavor/id/forms.py:28 +#, fuzzy +msgid "Enter a valid post code" +msgstr "Oppgje eit gyldig postnummer." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Oppgje eit gyldig telefonnummer." + +#: contrib/localflavor/id/forms.py:107 +#, fuzzy +msgid "Enter a valid vehicle license plate number" +msgstr "Oppgje eit gyldig telefonnummer." + +#: contrib/localflavor/id/forms.py:170 +#, fuzzy +msgid "Enter a valid NIK/KTP number" +msgstr "Oppgje eit gyldig IC-nummer." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +#, fuzzy +msgid "Bali" +msgstr "Bengalsk" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +#, fuzzy +msgid "Banten" +msgstr "Innhald" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +#, fuzzy +msgid "Bengkulu" +msgstr "Bengalsk" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +#, fuzzy +msgid "Gorontalo" +msgstr "Girona" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +#, fuzzy +msgid "Jambi" +msgstr "Tamil" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +#, fuzzy +msgid "Lampung" +msgstr "aug" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +#, fuzzy +msgid "Maluku" +msgstr "Malacky" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +#, fuzzy +msgid "Magelang" +msgstr "Málaga" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +#, fuzzy +msgid "Madiun" +msgstr "Madrid" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +#, fuzzy +msgid "Tapanuli" +msgstr "Tamaulipas" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +#, fuzzy +msgid "Bandung" +msgstr "Brandenburg" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +#, fuzzy +msgid "Cirebon" +msgstr "Girona" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +#, fuzzy +msgid "Bogor" +msgstr "Hyogo" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +#, fuzzy +msgid "Semarang" +msgstr "Serbisk" + +#: contrib/localflavor/id/id_choices.py:87 +#, fuzzy +msgid "Pati" +msgstr "aktiv" + +#: contrib/localflavor/id/id_choices.py:91 +#, fuzzy +msgid "Surabaya" +msgstr "laurdag" + +#: contrib/localflavor/id/id_choices.py:92 +#, fuzzy +msgid "Madura" +msgstr "Madrid" + +#: contrib/localflavor/id/id_choices.py:93 +#, fuzzy +msgid "Malang" +msgstr "Málaga" + +#: contrib/localflavor/id/id_choices.py:94 +#, fuzzy +msgid "Jember" +msgstr "november" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +#, fuzzy +msgid "Garut" +msgstr "Glarus" + +#: contrib/localflavor/ie/ie_counties.py:8 +#, fuzzy +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +#, fuzzy +msgid "Armagh" +msgstr "Aragón" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +#, fuzzy +msgid "Cavan" +msgstr "Katalansk" + +#: contrib/localflavor/ie/ie_counties.py:12 +#, fuzzy +msgid "Clare" +msgstr "Cáceres" + +#: contrib/localflavor/ie/ie_counties.py:13 +#, fuzzy +msgid "Cork" +msgstr "eller" + +#: contrib/localflavor/ie/ie_counties.py:14 +#, fuzzy +msgid "Derry" +msgstr "februar" + +#: contrib/localflavor/ie/ie_counties.py:15 +#, fuzzy +msgid "Donegal" +msgstr "éin" + +#: contrib/localflavor/ie/ie_counties.py:16 +#, fuzzy +msgid "Down" +msgstr "Devon" + +#: contrib/localflavor/ie/ie_counties.py:17 +#, fuzzy +msgid "Dublin" +msgstr "Lublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +#, fuzzy +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +#, fuzzy +msgid "Galway" +msgstr "Galicia" + +#: contrib/localflavor/ie/ie_counties.py:20 +#, fuzzy +msgid "Kerry" +msgstr "februar" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +#, fuzzy +msgid "Louth" +msgstr "Logg ut" + +#: contrib/localflavor/ie/ie_counties.py:28 +#, fuzzy +msgid "Mayo" +msgstr "mai" + +#: contrib/localflavor/ie/ie_counties.py:29 +#, fuzzy +msgid "Meath" +msgstr "Metadata" + +#: contrib/localflavor/ie/ie_counties.py:30 +#, fuzzy +msgid "Monaghan" +msgstr "Logg inn att" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +#, fuzzy +msgid "Roscommon" +msgstr "kommentar" + +#: contrib/localflavor/ie/ie_counties.py:33 +#, fuzzy +msgid "Sligo" +msgstr "Shiga" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +#, fuzzy +msgid "Tyrone" +msgstr "Tirol" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +#, fuzzy +msgid "Westmeath" +msgstr "West Pomerania" + +#: contrib/localflavor/ie/ie_counties.py:38 +#, fuzzy +msgid "Wexford" +msgstr "ons" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Oppgje eit postnummer på forma XXXXXXX." + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Oppgje eit gyldig islandsk identifikasjonsnummer på forma XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "Det islandske identifikasjonsnummeret er ugyldig." + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "Oppgje eit gyldig postnummer." + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "Oppgje eit gyldig italiensk personnummer." + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "Oppgje eit gyldig VAT-nummer." + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Oppgje eit postnummer på forma XXXXXXX eller XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaido" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokyo" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ishikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kyoto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Osaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyogo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kochi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagasaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kumamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Oita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/kw/forms.py:25 +#, fuzzy +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Oppgje eit gyldig South African ID-nummer." + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "Aguascalientes" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "Baja California" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "Baja California Sur" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "Campeche" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "Chihuahua" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "Chiapas" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "Coahuila" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "Colima" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "Distrito Federal" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "Durango" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "Guerrero" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "Guanajuato" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "Hidalgo" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "Jalisco" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "Estado de México" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "Michoacán" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "Morelos" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "Nayarit" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "Nuevo León" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "Oaxaca" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "Puebla" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "Querétaro" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "Quintana Roo" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "Sinaloa" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "San Luis Potosí" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "Sonora" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "Tabasco" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "Tamaulipas" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "Tlaxcala" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "Veracruz" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "Yucatán" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "Zacatecas" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "Oppgje eit gyldig postnummer." + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "Oppgje eit gyldig SoFi-nummer." + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "Drenthe" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Flevoland" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Friesland" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Gelderland" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Groningen" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Limburg" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Noord-Brabant" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Noord-Holland" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Overijssel" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Utrecht" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Zeeland" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Zuid-Holland" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "Oppgje eit gyldig norsk personnummer." + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "Feltet krevar åtte siffer." + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "Feltet krevar 11 siffer." + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "National Identification Number består av 11 siffer." + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "Feil kontrollsum for National Identification Number." + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Oppgje eit NIP på forma XXX-XXX-XX-XX eller XX-XX-XXX-XXX." + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Ugyldig kontrollsum for NIP." + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "National Business Register Number (REGON) består av 9 eller 14 siffer." + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "Ugyldig kontrollsum for National Business Register Number (REGON)." + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Oppgje eit postnummer på forma XX-XXX." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Lower Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kuyavia-Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Lodz" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Lesser Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masovia" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Subcarpatia" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlasie" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuria" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Greater Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "West Pomerania" + +#: contrib/localflavor/pt/forms.py:17 +#, fuzzy +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Oppgje eit postnummer på forma XXXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "Oppgje eit gyldig CIF." + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "Oppgje eit gyldig CNP." + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "Oppgje eit gyldig IBAN på forma ROXX-XXXX-XXXX-XXXX-XXXX-XXXX." + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "Telefonnummeret må vere på forma XXXX-XXXXXX." + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "Oppgje eit postnummer på forma XXXXXX." + +#: contrib/localflavor/se/forms.py:50 +#, fuzzy +msgid "Enter a valid Swedish organisation number." +msgstr "Oppgje eit gyldig fødselsnummer." + +#: contrib/localflavor/se/forms.py:107 +#, fuzzy +msgid "Enter a valid Swedish personal identity number." +msgstr "Oppgje eit gyldig finsk personnummer." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +#, fuzzy +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Oppgje eit postnummer på forma XX-XXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +#, fuzzy +msgid "Södermanland" +msgstr "Gelderland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +#, fuzzy +msgid "Kalmar" +msgstr "mar" + +#: contrib/localflavor/se/se_counties.py:24 +#, fuzzy +msgid "Gotland" +msgstr "Skottland" + +#: contrib/localflavor/se/se_counties.py:25 +#, fuzzy +msgid "Blekinge" +msgstr "Bern" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +#, fuzzy +msgid "Halland" +msgstr "Saarland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +#, fuzzy +msgid "Dalarna" +msgstr "Galanta" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajska Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kezmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komarno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kosice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kosice II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kosice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kosice IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavska Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Roznava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ruzomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spisska Nova Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sala" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencin" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zilina" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Banská Bystrica-regionen" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Bratislava-regionen" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Košice-regionen" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nitra-regionen" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Prešov-regionen" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trenčín-regionen" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava-regionen" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Žilina-regionen" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "Oppgje eit gyldig postnummer." + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "Bedfordshire" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "Buckinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "Cheshire" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "Cornwall" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "Cumbria" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "Derbyshire" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "Devon" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "Dorset" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "Durham" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "East Sussex" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "Essex" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "Gloucestershire" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "Stor-London" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "Stor-Manchester" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "Hampshire" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "Hertfordshire" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "Kent" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "Lancashire" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "Leicestershire" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "Lincolnshire" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "Merseyside" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "Norfolk" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "North Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "Northamptonshire" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "Northumberland" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "Nottinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "Oxfordshire" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "Shropshire" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "Somerset" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "South Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "Staffordshire" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "Suffolk" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "Surrey" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "Tyne and Wear" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "Warwickshire" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "West Midlands" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "West Sussex" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "West Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "Wiltshire" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "Worcestershire" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "Antrim" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "Armagh" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "Down" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "Londonderry" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "Clwyd" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "Dyfed" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "Gwent" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "Gwynedd" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "Mid Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "Powys" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "South Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "West Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "Borders" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "Central Scotland" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "Dumfries og Galloway" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "Fife" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "Grampian" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "Highland" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "Lothian" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "Orknøyene" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "Shetland" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "Strathclyde" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "Tayside" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "Ytre Hebridene" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "England" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Nord-Irland" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "Skottland" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "Wales" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Oppgje eit postnummer på forma XXXXX eller XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:26 +#, fuzzy +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefonnummeret må vere på forma XX-XXXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" +"Oppgje eit gyldig amerikansik Social Security-nummer på forma XXX-XX-XXXX." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stat (i USA, to store bokstavar)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefonnummer" + +#: contrib/localflavor/uy/forms.py:28 +#, fuzzy +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Oppgje gyldig CUIT på forma XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +#, fuzzy +msgid "Enter a valid CI number." +msgstr "Oppgje eit gyldig IC-nummer." + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "Oppgje eit gyldig South African ID-nummer." + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "Oppgje eit gyldig postnummer." + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "Eastern Cape" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "Free State" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "Gauteng" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "KwaZulu-Natal" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "Limpopo" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "Mpumalanga" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "Northern Cape" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "North West" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "Western Cape" + +#: contrib/messages/tests/base.py:101 +#, fuzzy +msgid "lazy message" +msgstr "melding" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "omadresser frå" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Dette bør vere ein fullstendig sti utan domenenavn. Døme: '/hendingar/finn/" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "omadresser til" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Dette kan enten vere ein fullstendig sti (som over), eller ei fullstendig " +"nettadresse som startar med 'http://'" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "omadressering" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "omadresseringar" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "sesjonsnøkkel" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "sesjonsdata" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "utløpsdato" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "sesjon" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "sesjonar" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "domenenamn" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "visingsnamn" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "nettstader" + +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Oppgje ein gyldig verdi." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Oppgje ei gyldig nettadresse." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Nettadressa fører til ei side som ikkje eksisterar." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Oppgje ein gyldig 'slug' som består av bokstavar, nummer, understrekar eller " +"bindestrekar." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Oppgje ei gyldig IPv4-adresse." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Oppgje berre tall skild med komma." + +#: core/validators.py:135 +#, fuzzy, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Verdien må minimum ha %(min)d teikn (den er %(length)d)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, fuzzy, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Verdien må vere mindre enn eller lik %s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, fuzzy, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Verdien må vere større enn eller lik %s." + +#: core/validators.py:164 +#, fuzzy, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Verdien må minimum ha %(min)d teikn (den er %(length)d)." + +#: core/validators.py:170 +#, fuzzy, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Verdien kan maksimalt ha %(max)d teikn (den er %(length)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s må vere unik for %(date_field)s %(lookup)s." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s med %(field_label)s fins allereie." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "Feltet kan ikkje vere tomt." + +#: db/models/fields/__init__.py:65 +#, fuzzy +msgid "This field cannot be blank." +msgstr "Feltet kan ikkje vere tomt." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Heiltal" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Verdien må vere eit heltall." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Verdien må vere True eller False." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Boolsk (True eller False)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Tekst (opp til %(max_length)s teikn)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Heiltal skild med komma" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Dato (utan tid)" + +#: db/models/fields/__init__.py:585 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Oppgje ein gyldig dato på forma ÅÅÅÅ-MM-DD." + +#: db/models/fields/__init__.py:586 +#, python-format +msgid "Invalid date: %s" +msgstr "Ugyldig dato: %s" + +#: db/models/fields/__init__.py:667 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "Oppgje dato og tid på forma ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Dato (med tid)" + +#: db/models/fields/__init__.py:735 +msgid "This value must be a decimal number." +msgstr "Verdien må vere eit desimaltall." + +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Desimaltall" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "E-postadresse" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Filsti" + +#: db/models/fields/__init__.py:822 +msgid "This value must be a float." +msgstr "Verdien må vere eit flyttall." + +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Flyttall" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "" + +#: db/models/fields/__init__.py:912 +msgid "This value must be either None, True or False." +msgstr "Verdien må vere None, True eller False." + +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Boolsk (True, False eller None)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Tekst" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Tid" + +#: db/models/fields/__init__.py:1025 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Oppgje tida på forma TT:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "XML-tekst" + +#: db/models/fields/related.py:799 +#, fuzzy, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "%(name)s-objekt med primærnøkkelen %(key)r finst ikkje." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "" + +#: db/models/fields/related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Hald nede \"Control\", eller \"Command\" på ein Mac, for å velge meir enn " +"éin." + +#: db/models/fields/related.py:1061 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Oppgje gyldige %(self)s-ID-ar. Verdien %(value)r er ugyldig." +msgstr[1] "Oppgje gyldige %(self)s-ID-ar. Verdiane %(value)r er ugyldige." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Feltet er påkravd." + +#: forms/fields.py:204 +msgid "Enter a whole number." +msgstr "Oppgje eit heiltall." + +#: forms/fields.py:235 forms/fields.py:256 +msgid "Enter a number." +msgstr "Oppgje eit tall." + +#: forms/fields.py:259 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Verdien kan ikkje ha meir enn %s siffer totalt." + +#: forms/fields.py:260 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Verdien kan ikkie ha meir enn %s desimalar." + +#: forms/fields.py:261 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Verdien kan ikkje ha meir enn %s siffer framfor komma." + +#: forms/fields.py:323 forms/fields.py:838 +msgid "Enter a valid date." +msgstr "Oppgje ein gyldig dato." + +#: forms/fields.py:351 forms/fields.py:839 +msgid "Enter a valid time." +msgstr "Oppgje eit gyldig tidspunkt." + +#: forms/fields.py:377 +msgid "Enter a valid date/time." +msgstr "Oppgje gyldig dato og tidspunkt." + +#: forms/fields.py:435 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Inga fil vart sendt. Sjekk \"encoding\"-typen på skjemaet." + +#: forms/fields.py:436 +msgid "No file was submitted." +msgstr "Inga fil vart sendt." + +#: forms/fields.py:437 +msgid "The submitted file is empty." +msgstr "Fila er tom." + +#: forms/fields.py:438 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "Filnamnet kan maksimalt ha %(max)d teikn (det har %(length)d)." + +#: forms/fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Last opp eit gyldig bilete. Fila du lasta opp var ødelagt eller ikkje eit " +"bilete." + +#: forms/fields.py:596 forms/fields.py:671 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Velg eit gyldig valg. %(value)s er ikkje eit av dei tilgjengelege valga." + +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 +msgid "Enter a list of values." +msgstr "Oppgje ei liste med verdiar." + +#: forms/formsets.py:298 forms/formsets.py:300 +msgid "Order" +msgstr "Rekkefølge" + +#: forms/models.py:567 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Korriger dupliserte data for %(field)s." + +#: forms/models.py:571 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "Korriger dupliserte data for %(field)s, som må vere unike." + +#: forms/models.py:577 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"Korriger dupliserte data for %(field_name)s, som må vere unike for %(lookup)" +"s i %(date_field)s." + +#: forms/models.py:585 +msgid "Please correct the duplicate values below." +msgstr "Korriger dei dupliserte verdiane nedanfor." + +#: forms/models.py:860 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" +"Primærnøkkelen er ikkje den samme som foreldreinstansen sin primærnøkkel." + +#: forms/models.py:926 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Velg eit gyldig valg. Valget er ikkje eit av dei tilgjengelege valga." + +#: forms/models.py:1008 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Velg eit gyldig valg. %s er ikkje eit av dei tilgjengelege valga." + +#: forms/models.py:1010 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "\"%s\" er ikkje ein gyldig verdi for ein primærnøkkel." + +#: template/defaultfilters.py:781 +msgid "yes,no,maybe" +msgstr "ja,nei,kanskje" + +#: template/defaultfilters.py:812 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" + +#: template/defaultfilters.py:814 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:816 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:817 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "midnatt" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "12:00" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "måndag" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "tysdag" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "onsdag" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "torsdag" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "fredag" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "laurdag" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "søndag" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "man" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "tys" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "ons" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "tors" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "fre" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "laur" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "søn" + +#: utils/dates.py:18 +msgid "January" +msgstr "januar" + +#: utils/dates.py:18 +msgid "February" +msgstr "februar" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "mars" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "april" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "mai" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "juni" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "juli" + +#: utils/dates.py:19 +msgid "August" +msgstr "august" + +#: utils/dates.py:19 +msgid "September" +msgstr "september" + +#: utils/dates.py:19 +msgid "October" +msgstr "oktober" + +#: utils/dates.py:19 +msgid "November" +msgstr "november" + +#: utils/dates.py:20 +msgid "December" +msgstr "desember" + +#: utils/dates.py:23 +msgid "jan" +msgstr "jan" + +#: utils/dates.py:23 +msgid "feb" +msgstr "feb" + +#: utils/dates.py:23 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:23 +msgid "apr" +msgstr "apr" + +#: utils/dates.py:23 +msgid "may" +msgstr "mai" + +#: utils/dates.py:23 +msgid "jun" +msgstr "jun" + +#: utils/dates.py:24 +msgid "jul" +msgstr "jul" + +#: utils/dates.py:24 +msgid "aug" +msgstr "aug" + +#: utils/dates.py:24 +msgid "sep" +msgstr "sep" + +#: utils/dates.py:24 +msgid "oct" +msgstr "okt" + +#: utils/dates.py:24 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:24 +msgid "dec" +msgstr "des" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "jan." + +#: utils/dates.py:31 +msgid "Feb." +msgstr "feb." + +#: utils/dates.py:32 +msgid "Aug." +msgstr "aug." + +#: utils/dates.py:32 +msgid "Sept." +msgstr "sept." + +#: utils/dates.py:32 +msgid "Oct." +msgstr "okt." + +#: utils/dates.py:32 +msgid "Nov." +msgstr "nov." + +#: utils/dates.py:32 +msgid "Dec." +msgstr "des." + +#: utils/text.py:130 +msgid "or" +msgstr "eller" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "år" +msgstr[1] "år" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "månad" +msgstr[1] "månadar" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "veke" +msgstr[1] "veker" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "dag" +msgstr[1] "dagar" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "time" +msgstr[1] "timar" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minutt" +msgstr[1] "minuttar" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "minuttar" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:512 +msgid "DATE_FORMAT" +msgstr "j. F Y" + +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. F Y H:i" + +#: utils/translation/trans_real.py:514 +msgid "TIME_FORMAT" +msgstr "H:i" + +#: utils/translation/trans_real.py:535 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:536 +msgid "MONTH_DAY_FORMAT" +msgstr "j. F" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s vart oppretta." + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s vart oppdatert." + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s vart sletta." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Ei eller fleire %(fieldname)s i %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Ein eller fleire %(fieldname)s i %(name)s:" + +#~ msgid "Old password:" +#~ msgstr "Gammalt passord:" + +#~ msgid "Relation to parent model" +#~ msgstr "Relasjon til foreldermodell" + +#~ msgid "Add user" +#~ msgstr "Opprett ny brukar" + +#~ msgid "Comment moderation queue" +#~ msgstr "Kommentarmoderasjonskø" + +#~ msgid "No comments to moderate" +#~ msgstr "Ingen kommentarar å moderere" + +#~ msgid "Email" +#~ msgstr "E-post" + +#~ msgid "Authenticated?" +#~ msgstr "Godkjend?" + +#~ msgid "IP Address" +#~ msgstr "IP-adresse" + +#~ msgid "Date posted" +#~ msgstr "Dato lagt inn" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "no" +#~ msgstr "nei" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nn/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/nn/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nn/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nn/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,126 @@ +# translation of djangojs.po to norwegian nynorsk +# Copyright (C) 2005 and beyond +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-28 17:42+0200\n" +"PO-Revision-Date: 2010-03-04 12:13+0200\n" +"Last-Translator: Håvard Grimelid\n" +"Language-Team: Norsk \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:37 +#, perl-format +msgid "Available %s" +msgstr "Tilgjengelege %s" + +#: contrib/admin/media/js/SelectFilter2.js:45 +msgid "Choose all" +msgstr "Velg alle" + +#: contrib/admin/media/js/SelectFilter2.js:50 +msgid "Add" +msgstr "Ny" + +#: contrib/admin/media/js/SelectFilter2.js:52 +msgid "Remove" +msgstr "Slett" + +#: contrib/admin/media/js/SelectFilter2.js:57 +#, perl-format +msgid "Chosen %s" +msgstr "Valde %s" + +#: contrib/admin/media/js/SelectFilter2.js:58 +msgid "Select your choice(s) and click " +msgstr "Velg valet og klikk " + +#: contrib/admin/media/js/SelectFilter2.js:63 +msgid "Clear all" +msgstr "Fjern alle" + +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Januar Februar Mars April Mai Juni Juli August September Oktober November " +"Desember" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "S M T O T F L" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Vis" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Skjul" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Søndag Måndag Tysdag Onsdag Torsdag Fredag Laurdag" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Now" +msgstr "No" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 +msgid "Clock" +msgstr "Klokke" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Choose a time" +msgstr "Velg eit klokkeslett" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Midnight" +msgstr "Midnatt" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 +msgid "6 a.m." +msgstr "06:00" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +msgid "Noon" +msgstr "12:00" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 +msgid "Cancel" +msgstr "Avbryt" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 +msgid "Today" +msgstr "I dag" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 +msgid "Calendar" +msgstr "Kalender" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Yesterday" +msgstr "I går" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Tomorrow" +msgstr "I morgon" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nn/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/nn/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/nn/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,34 @@ +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j. F Y H:i' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y H:i' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%j.%m.%Y', '%j.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' + '%Y-%m-%j', # '2006-10-25', + # '%j. %b %Y', '%j %b %Y', # '25. okt 2006', '25 okt 2006' + # '%j. %b. %Y', '%j %b. %Y', # '25. okt. 2006', '25 okt. 2006' + # '%j. %B %Y', '%j %B %Y', # '25. oktober 2006', '25 oktober 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%Y-%m-%j', # '2006-10-25' + '%j.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%j.%m.%Y %H:%M', # '25.10.2006 14:30' + '%j.%m.%Y', # '25.10.2006' + '%j.%m.%y %H:%M:%S', # '25.10.06 14:30:59' + '%j.%m.%y %H:%M', # '25.10.06 14:30' + '%j.%m.%y', # '25.10.06' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/no/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/no/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/no/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/no/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/no/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -1,5 +1,6 @@ -# translation of django.po to norwegian -# Copyright (C) 2005 and beyond +# This is the *old* Norwegian (Bokmål) translation of Django +# For future updates please use the translation in the "nb" directory. +# Copyright (C) 2005-2010 # This file is distributed under the same license as the Django package. # msgid "" @@ -7,7 +8,7 @@ "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" -"PO-Revision-Date: 2009-07-24 15:44+0200\n" +"PO-Revision-Date: 2010-03-11 14:22+0100\n" "Last-Translator: Christian Mikalsen and Jon Lønne\n" "Language-Team: Norsk \n" "MIME-Version: 1.0\n" @@ -19,215 +20,235 @@ msgstr "Arabisk" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Bulgarsk" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "Bengalsk" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Bulgarsk" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "Katalansk" +msgid "Bosnian" +msgstr "Bosnisk" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Katalansk" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "Tsjekkisk" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "Walisisk" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "Dansk" +msgid "Welsh" +msgstr "Walisisk" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dansk" + +#: conf/global_settings.py:52 msgid "German" msgstr "Tysk" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Gresk" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Engelsk" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "Spansk" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estisk" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "Argentinsk spansk" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Estisk" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "Baskisk" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "Persisk" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "Finsk" -#: conf/global_settings.py:60 -msgid "French" -msgstr "Fransk" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "Irsk" +msgid "French" +msgstr "Fransk" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "Galisisk" +msgid "Frisian" +msgstr "Frisisk" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Ungarsk" +msgid "Irish" +msgstr "Irsk" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "Galisisk" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "Hebraisk" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "Kroatisk" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Islandsk" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Italiensk" +msgid "Hungarian" +msgstr "Ungarsk" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Islandsk" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Italiensk" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "Japansk" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "Georgisk" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "Koreansk" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Latvisk" - #: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "Litauisk" +msgid "Korean" +msgstr "Koreansk" #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "Makedonsk" +msgid "Lithuanian" +msgstr "Litauisk" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "Nederlandsk" +msgid "Latvian" +msgstr "Latvisk" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Norsk" +msgid "Macedonian" +msgstr "Makedonsk" #: conf/global_settings.py:79 +msgid "Dutch" +msgstr "Nederlandsk" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "Norsk" + +#: conf/global_settings.py:81 msgid "Polish" msgstr "Polsk" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "Portugisisk" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "Brasiliansk portugisisk" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "Rumensk" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "Russisk" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "Slovakisk" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "Slovensk" -#: conf/global_settings.py:86 +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "Albansk" + +#: conf/global_settings.py:89 msgid "Serbian" msgstr "Serbisk" -#: conf/global_settings.py:87 +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "Serbisk latin" + +#: conf/global_settings.py:91 msgid "Swedish" msgstr "Svensk" -#: conf/global_settings.py:88 +#: conf/global_settings.py:92 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "Thai" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "Tyrkisk" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "Ukrainsk" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" -msgstr "Simplifisert kinesisk" - -#: conf/global_settings.py:94 +msgstr "Forenklet kinesisk" + +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "Tradisjonell kinesisk" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Slettet %(count)d %(items)s." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1101 msgid "Are you sure?" msgstr "Er du sikker?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Slett valgte %(verbose_name_plural)s" @@ -266,19 +287,19 @@ msgid "This year" msgstr "I år" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "Yes" msgstr "Ja" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "No" msgstr "Nei" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:470 msgid "Unknown" msgstr "Ukjent" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:19 msgid "Action:" msgstr "Handling:" @@ -310,104 +331,128 @@ msgid "log entries" msgstr "logginnlegg" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:139 contrib/admin/options.py:154 msgid "None" msgstr "Ingen" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:558 #, python-format msgid "Changed %s." msgstr "Endret %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:558 contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:802 +#: forms/models.py:553 msgid "and" msgstr "og" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:563 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Opprettet %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:567 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Endret %(list)s for %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:572 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Slettet %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:576 msgid "No fields changed." msgstr "Ingen felt endret." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:642 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" ble opprettet." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:646 contrib/admin/options.py:679 msgid "You may edit it again below." msgstr "Du kan redigere videre nedenfor." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:656 contrib/admin/options.py:689 #, python-format msgid "You may add another %s below." msgstr "Du kan opprette ny %s nedenfor." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:677 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" ble endret." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:685 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" ble endret. Du kan redigere videre nedenfor." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:743 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "Du må velge objekter for å utføre handlinger på dem. Ingen objekter " +"har blitt endret." + +#: contrib/admin/options.py:761 +msgid "No action selected." +msgstr "Ingen handling valgt." + +#: contrib/admin/options.py:841 #, python-format msgid "Add %s" msgstr "Opprett %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:867 contrib/admin/options.py:1081 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s-objekt med primærnøkkelen %(key)r finnes ikke." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:932 #, python-format msgid "Change %s" -msgstr "Rediger %s" - -#: contrib/admin/options.py:905 +msgstr "Endre %s" + +#: contrib/admin/options.py:977 msgid "Database error" msgstr "Databasefeil" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1013 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s ble endret." msgstr[1] "%(count)s %(name)s ble endret." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1040 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "av %(count)d valgt" +msgstr[1] "av %(count)d valgt" + +#: contrib/admin/options.py:1042 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s valgt" +msgstr[1] "Alle %(total_count)s valgt" + +#: contrib/admin/options.py:1094 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" ble slettet." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1131 #, python-format msgid "Change history: %s" msgstr "Endringshistorikk: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -415,11 +460,11 @@ "Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på " "små og store bokstaver." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Økten din har tidsavbrutt, vennligst logg inn igjen." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -427,62 +472,52 @@ "Det ser ut som om nettleseren din ikke støtter informasjonskapsler " "(cookies). Vennligst konfigurer nettleseren din og prøv igjen." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Brukernavnet kan ikke inneholde tegnet '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "E-postadressen er ikke brukernavnet ditt, prøv '%s' isteden." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Nettstedsadministrasjon" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Logg inn" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "%s-administrasjon" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "En eller flere %(fieldname)s i %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Dato:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Tid:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Nå:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Endre:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Oppslag" -#: contrib/admin/widgets.py:236 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Legg til ny" @@ -498,16 +533,16 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 #: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -544,6 +579,19 @@ msgid "Go" msgstr "Gå" +#: contrib/admin/templates/admin/actions.html:10 +msgid "Click here to select the objects across all pages" +msgstr "Trykk her for å velge samtlige objekter fra alle sider" + +#: contrib/admin/templates/admin/actions.html:10 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Velg alle %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:12 +msgid "Clear selection" +msgstr "Nullstill valg" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format @@ -556,22 +604,22 @@ #: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentasjon" #: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Endre passord" #: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Logg ut" @@ -583,41 +631,42 @@ msgid "Django administration" msgstr "Django-administrasjon" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Opprett" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Historikk" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" -msgstr "Vis på nettside" - -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +msgstr "Vis på nettsted" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Vennligst korriger feilen under." msgstr[1] "Vennligst korriger feilene under." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:60 #, python-format msgid "Add %(name)s" msgstr "Opprett %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:79 msgid "Filter" msgstr "Filtrering" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:294 msgid "Delete" msgstr "Slett" @@ -664,9 +713,9 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" -"Er du sikker på at du vil slette disse %(object_name)s-objektene? De " +"Er du sikker på at du vil slette de valgte %(object_name)s-objektene? De " "følgende objektene og deres relaterte objekter vil bli slettet:" #: contrib/admin/templates/admin/filter.html:2 @@ -729,15 +778,9 @@ msgstr "Bruker" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Handling" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j. F Y H:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -783,7 +826,7 @@ msgid "Save and continue editing" msgstr "Lagre og fortsett å redigere" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -791,33 +834,39 @@ "Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å " "endre flere brukerinnstillinger." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Brukernavn" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Passord" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Passord (gjenta)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Skriv inn det samme passordet som ovenfor, for verifisering." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Skriv inn et nytt passord for brukeren %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Passord" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Passord (gjenta)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Skriv inn det samme passordet som ovenfor, for verifisering." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Legg til ny %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Fjern" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Slette?" @@ -831,9 +880,9 @@ msgstr "Logg inn igjen" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Endre passord" @@ -846,7 +895,7 @@ msgid "Your password was changed." msgstr "Ditt passord ble endret." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -854,21 +903,17 @@ "Venligst oppgi ditt gamle passord av sikkerhetsgrunner. Oppgi deretter ditt " "nye passord to ganger, slik at vi kan kontrollere at det er korrekt." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Gammelt passord:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nytt passord:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Gjenta nytt passord:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Gammelt passord" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nytt passord" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Endre passord" @@ -907,6 +952,14 @@ "Venligst oppgi ditt nye passord to ganger, for å sikre at du oppgir det " "korrekt." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nytt passord:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Gjenta nytt passord:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Passordet ble ikke nullstilt" @@ -976,7 +1029,7 @@ msgid "Reset my password" msgstr "Nullstill mitt passord" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:240 msgid "All dates" msgstr "Alle datoer" @@ -988,13 +1041,13 @@ #: contrib/admin/views/main.py:70 #, python-format msgid "Select %s to change" -msgstr "Velg %s du ønsker å redigere" - -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +msgstr "Velg %s du ønsker å endre" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" -msgstr "nettside" - -#: contrib/admin/views/template.py:39 +msgstr "nettsted" + +#: contrib/admin/views/template.py:40 msgid "template" msgstr "mal" @@ -1054,89 +1107,7 @@ msgid "Fields on %s objects" msgstr "Felter på %s-objekter" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Heltall" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Boolsk (True eller False)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Tekst (opp til %(max_length)s tegn)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Heltall adskilt med komma" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Dato (uten tid)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Dato (med tid)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Desimaltall" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "E-postadresse" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Filsti" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Flyttall" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "IP-adresse" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Boolsk (True, False eller None)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Relasjon til foreldermodell" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Telefonnummer" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Tekst" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Tid" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "Nettadresse" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Stat (i USA, to store bokstaver)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "XML-tekst" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ser ikke ut til å være et urlpattern-objekt" @@ -1208,66 +1179,62 @@ msgid "As above, but opens the admin page in a new window." msgstr "Samme som over, men åpner administrasjonssiden i et nytt vindu." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Personlig informasjon" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Rettigheter" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Viktige datoer" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupper" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Opprett ny bruker" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Passordet er endret." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Endre passord: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Brukernavn" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" -"Påkrevet. 30 tegn eller færre. Kun alfanumeriske tegn (bokstaver, tall og " -"understreker)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Feltet kan kun inneholde bokstaver, nummer og understreker." +"Påkrevet. 30 tegn eller færre. Kun bokstaver, tall og @/./+/-/_." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Verdien kan kun inneholde bokstaver, tall og @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Passordbekreftelse" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Det eksisterer allerede en bruker med dette brukernavnet." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "De to passordfeltene er ikke like." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Denne kontoen er inaktiv." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1275,11 +1242,11 @@ "Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). " "Informasjonskapsler er påkrevet for å logge inn." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-post" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1287,72 +1254,70 @@ "Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker på at " "du er registrert?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Nullstilling av passord på %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nytt passord" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Bekreft nytt passord" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Gammelt passord" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Ditt gamle passord er galt. Vennligst prøv igjen." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "navn" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "kodenavn" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "rettighet" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "rettigheter" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "gruppe" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupper" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "brukernavn" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Påkrevet. 30 tegn eller færre. Bokstaver, tall og @/./+/-/_." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "fornavn" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "etternavn" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "e-postadresse" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "passord" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1360,45 +1325,45 @@ "Bruk '[algo]$[salt]$[hexdigest]' eller endre passord-" "skjemaet." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "administrasjonsstatus" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Angir at brukeren kan logge inn på denne administrasjonssiden." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "aktiv" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "" "Angir at denne brukeren er aktiv. Avmerk denne i stedet for å slette kontoen." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "superbruker" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Angir at denne brukeren har alle rettigheter uten å eksplisitt sette de." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "siste innlogging" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "registrert" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1406,43 +1371,75 @@ "I tillegg til de rettighetene som blir angitt manuelt, får brukeren også " "rettighetene til gruppene han/hun er med i." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "Brukerrettigheter" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "bruker" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "brukere" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "melding" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Logget ut" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:416 msgid "Enter a valid e-mail address." msgstr "Oppgi en gyldig e-postadresse." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Innhold" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadata" +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "flagget" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "Flagg valgte kommentarer" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "godkjent" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "Tillat valgte kommentarer" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "fjernet" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "Fjern valgte kommentarer" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 kommentar ble %(action)s." +msgstr[1] "%(count)s kommentarer ble %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" -msgstr "%(site_name)s - kommentarer" +msgstr "%(site_name)s kommentarer" #: contrib/comments/feeds.py:23 #, python-format @@ -1450,7 +1447,6 @@ msgstr "Siste kommentarer fra %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Navn" @@ -1458,25 +1454,29 @@ msgid "Email address" msgstr "E-postadresse" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1121 +msgid "URL" +msgstr "Nettadresse" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Kommentar" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Hvis du oppgir noe i dette feltet, vil kommentaren bli behandlet som spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "innholdstype" @@ -1505,6 +1505,10 @@ msgid "date/time submitted" msgstr "dato/tid for innsendelse" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:916 +msgid "IP address" +msgstr "IP-adresse" + #: contrib/comments/models.py:61 msgid "is public" msgstr "er tilgjengelig for alle" @@ -1586,7 +1590,6 @@ msgstr "Gjør denne kommentaren offentlig?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Godkjenn" @@ -1611,11 +1614,6 @@ msgid "Really remove this comment?" msgstr "Fjerne denne kommentaren?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Fjern" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Takk for fjerningen" @@ -1646,39 +1644,6 @@ msgid "Preview" msgstr "Forhåndsvisning" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Kommentarmoderasjonskø" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Ingen kommentarer å moderere" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "E-post" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Godkjent?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP-adresse" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Dato lagt inn" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "ja" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "nei" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Takk for kommentar" @@ -1706,11 +1671,11 @@ msgid "or make changes" msgstr "eller gjør endringer" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "python-modell klassenavn" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "innholdstyper" @@ -1772,7 +1737,7 @@ msgid "flat pages" msgstr "flatsider" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1780,6 +1745,38 @@ "Vi beklager, men dette skjemaet har tidsavbrutt. Vennligst fyll ut skjemaet " "fra denne siden." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "Punkt" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "Polygon" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Ingen geometriverdi oppgitt." @@ -1884,25 +1881,25 @@ msgid "yesterday" msgstr "i går" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Oppgi et postnummer på formen NNNN eller ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Feltet krever kun tall." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Feltet krever 7 eller 8 siffer." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Oppgi gyldig CUIT på formen XX-XXXXXXXX-X or XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Ugyldig CUIT." @@ -1942,8 +1939,8 @@ msgid "Vienna" msgstr "Wien" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Oppgi et postnummer på formen XXXX." @@ -1951,19 +1948,19 @@ msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." msgstr "Oppgi et gyldig Østerrisk personnummer på formen XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Oppgi et firesifret postnummer." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Oppgi et postnummer på formen XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Telefonnummeret må være på formen XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1971,27 +1968,27 @@ "Velg en gyldig brasiliansk stat. Den staten er ikke et av de tilgjengelige " "valgene." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Ugyldig CPF-nummer." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Feltet krever maksimum 11 eller 14 siffer." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Ugyldig CNPJ-nummer." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Feltet krever minst 14 siffer." -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Oppgi et postnummer på formen XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "Oppgi et gyldig kanadisk personnummer på formen XXX-XXX-XXX." @@ -2099,7 +2096,7 @@ msgid "Zurich" msgstr "Zürich" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2107,15 +2104,15 @@ "Oppgi et gyldig sveitsisk identitets- eller passnummer på formen X1234567<0 " "eller 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Oppgi et gyldig chilensk RUT." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Oppgi et gyldig chilensk RUT på formen XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Den chilenske RUT er ugyldig." @@ -2175,23 +2172,23 @@ msgid "Moravian-Silesian Region" msgstr "Mähren-Schlesien region" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Oppgi et postnummer på formen XXXXX or XXX XX." -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Oppgi et fødselsnummer på formen XXXXXX/XXXX eller XXXXXXXXXX." - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Oppgi et fødselsnummer på formen XXXXXX/XXXX eller XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Oppgi et gyldig fødselsnummer." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Oppgi et gyldig IC-nummer." @@ -2259,12 +2256,12 @@ msgid "Thuringia" msgstr "Thüringen" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Oppgi et postnummer på formen XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2539,11 +2536,11 @@ msgid "Valencian Community" msgstr "Valenciana" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Oppgi et gyldig postnummer på formen 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2551,61 +2548,520 @@ "Oppgi et gyldig telefonnummer på et av følgende formater: 6XXXXXXXX, " "8XXXXXXXX eller 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Oppgi et gyldig NIF, NIE eller CIF." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Oppgi et gyldig NIF eller NIE." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Ugyldig kontrollsum for NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Ugyldig kontrollsum for NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Ugyldig kontrollsum for CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "Oppgi et gyldig kontonummer på formen XXXX-XXXX-XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Ugyldig kontrollsum for kontonummer." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Oppgi et gyldig finsk personnummer." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefonnummeret må være på formen 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Oppgi et gyldig postnummer." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Oppgi et gyldig telefonnummer." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Oppgi et gyldig kjøretøyregistreringsnummer." + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Oppgi et gyldig NIK/KTP-nummer." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +#, fuzzy +msgid "Pati" +msgstr "aktiv" + +#: contrib/localflavor/id/id_choices.py:91 +#, fuzzy +msgid "Surabaya" +msgstr "lørdag" + +#: contrib/localflavor/id/id_choices.py:92 +#, fuzzy +msgid "Madura" +msgstr "Madrid" + +#: contrib/localflavor/id/id_choices.py:93 +#, fuzzy +msgid "Malang" +msgstr "Málaga" + +#: contrib/localflavor/id/id_choices.py:94 +#, fuzzy +msgid "Jember" +msgstr "november" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +#, fuzzy +msgid "Garut" +msgstr "Glarus" + +#: contrib/localflavor/ie/ie_counties.py:8 +#, fuzzy +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +#, fuzzy +msgid "Armagh" +msgstr "Aragón" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +#, fuzzy +msgid "Cavan" +msgstr "Katalansk" + +#: contrib/localflavor/ie/ie_counties.py:12 +#, fuzzy +msgid "Clare" +msgstr "Cáceres" + +#: contrib/localflavor/ie/ie_counties.py:13 +#, fuzzy +msgid "Cork" +msgstr "eller" + +#: contrib/localflavor/ie/ie_counties.py:14 +#, fuzzy +msgid "Derry" +msgstr "februar" + +#: contrib/localflavor/ie/ie_counties.py:15 +#, fuzzy +msgid "Donegal" +msgstr "én" + +#: contrib/localflavor/ie/ie_counties.py:16 +#, fuzzy +msgid "Down" +msgstr "Devon" + +#: contrib/localflavor/ie/ie_counties.py:17 +#, fuzzy +msgid "Dublin" +msgstr "Lublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +#, fuzzy +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +#, fuzzy +msgid "Galway" +msgstr "Galicia" + +#: contrib/localflavor/ie/ie_counties.py:20 +#, fuzzy +msgid "Kerry" +msgstr "februar" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +#, fuzzy +msgid "Louth" +msgstr "Logg ut" + +#: contrib/localflavor/ie/ie_counties.py:28 +#, fuzzy +msgid "Mayo" +msgstr "mai" + +#: contrib/localflavor/ie/ie_counties.py:29 +#, fuzzy +msgid "Meath" +msgstr "Metadata" + +#: contrib/localflavor/ie/ie_counties.py:30 +#, fuzzy +msgid "Monaghan" +msgstr "Logg inn igjen" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +#, fuzzy +msgid "Roscommon" +msgstr "kommentar" + +#: contrib/localflavor/ie/ie_counties.py:33 +#, fuzzy +msgid "Sligo" +msgstr "Shiga" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +#, fuzzy +msgid "Tyrone" +msgstr "Tirol" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +#, fuzzy +msgid "Westmeath" +msgstr "West Pomerania" + +#: contrib/localflavor/ie/ie_counties.py:38 +#, fuzzy +msgid "Wexford" +msgstr "ons" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Oppgi et postnummer på formen XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "Oppgi et gyldig islandsk identifikasjonsnummer på formen XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Det islandsk identifikasjonsnummer er ugyldig." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Oppgi et gyldig postnummer." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Oppgi et gyldig italiensk personnummer." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Oppgi et gyldig VAT-nummer." @@ -2801,6 +3257,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Oppgi et gyldig Kuwaiti Civil ID-nummer." + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2929,15 +3389,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Oppgi et gyldig postnummer." -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Oppgi et gyldig telefonnummer." - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Oppgi et gyldig SoFi-nummer." @@ -2989,15 +3445,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Oppgi et gyldig norsk personnummer." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Feltet krever åtte siffer." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Feltet krever 11 siffer." @@ -3094,6 +3550,14 @@ msgid "West Pomerania" msgstr "West Pomerania" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Oppgi et postnummer på formen XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Telefonnummer må ha 9 siffer, eller starte med + eller 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Oppgi et gyldig CIF." @@ -3114,6 +3578,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Oppgi et postnummer på formen XXXXXX." +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Oppgi et gyldig svensk organisasjonsnummer." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Oppgi et gyldig svensk personnummer." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Oppgi et gyldig svensk postnummer på formen XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banska Bystrica" @@ -3746,20 +4310,44 @@ msgid "Wales" msgstr "Wales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Oppgi et postnummer på formen XXXXX eller XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefonnummeret må være på formen XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Oppgi et gyldig amerikansik Social Security-nummer på formen XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stat (i USA, to store bokstaver)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefonnummer" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "Oppgi gyldig CI på formen X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Oppgi et gyldig CI-nummer." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Oppgi et gyldig South African ID-nummer." -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Oppgi et gyldig postnummer." @@ -3799,6 +4387,10 @@ msgid "Western Cape" msgstr "Western Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "\"lazy\" melding" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "omadresser fra" @@ -3861,60 +4453,217 @@ #: contrib/sites/models.py:39 msgid "sites" -msgstr "nettsider" - -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 +msgstr "nettsteder" + +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Oppgi en gyldig verdi." + +#: core/validators.py:87 forms/fields.py:517 +msgid "Enter a valid URL." +msgstr "Oppgi en gyldig nettadresse." + +#: core/validators.py:89 forms/fields.py:518 +msgid "This URL appears to be a broken link." +msgstr "Nettadressen fører til en side som ikke eksisterer." + +#: core/validators.py:123 forms/fields.py:861 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Oppgi en gyldig 'slug' bestående av bokstaver, nummer, understreker eller " +"bindestreker." + +#: core/validators.py:126 forms/fields.py:854 +msgid "Enter a valid IPv4 address." +msgstr "Oppgi en gyldig IPv4-adresse." + +#: core/validators.py:129 db/models/fields/__init__.py:598 +msgid "Enter only digits separated by commas." +msgstr "Oppgi kun tall adskilt med komma." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Verdien må være %(limit_value)s (den er %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:196 forms/fields.py:246 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Verdien må være mindre enn eller lik som %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:197 forms/fields.py:247 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Verdien må være større enn eller lik som %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Verdien må minimum ha %(limit_value)d tegn (den har %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "Verdien kan maksimalt ha %(limit_value)d tegn (den er %(show_value)d)." + +#: db/models/base.py:780 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s må være unik for %(date_field)s %(lookup)s." + +#: db/models/base.py:795 db/models/base.py:803 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s med %(field_label)s finnes allerede." + +#: db/models/fields/__init__.py:62 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Verdien %r er ikke et gyldig valg." + +#: db/models/fields/__init__.py:63 +msgid "This field cannot be null." +msgstr "Feltet kan ikke være tomt." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be blank." +msgstr "Feltet kan ikke være blankt." + +#: db/models/fields/__init__.py:69 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Felt av typen: %(field_type)s" + +#: db/models/fields/__init__.py:477 db/models/fields/__init__.py:878 +#: db/models/fields/__init__.py:981 db/models/fields/__init__.py:992 +#: db/models/fields/__init__.py:1019 +msgid "Integer" +msgstr "Heltall" + +#: db/models/fields/__init__.py:481 db/models/fields/__init__.py:876 msgid "This value must be an integer." msgstr "Verdien må være et heltall." -#: db/models/fields/__init__.py:388 +#: db/models/fields/__init__.py:516 msgid "This value must be either True or False." msgstr "Verdien må være True eller False." -#: db/models/fields/__init__.py:427 -msgid "This field cannot be null." -msgstr "Feltet kan ikke være tomt." - -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Oppgi kun tall adskilt med komma." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:518 +msgid "Boolean (Either True or False)" +msgstr "Boolsk (True eller False)" + +#: db/models/fields/__init__.py:565 db/models/fields/__init__.py:1002 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Tekst (opp til %(max_length)s tegn)" + +#: db/models/fields/__init__.py:593 +msgid "Comma-separated integers" +msgstr "Heltall adskilt med komma" + +#: db/models/fields/__init__.py:607 +msgid "Date (without time)" +msgstr "Dato (uten tid)" + +#: db/models/fields/__init__.py:611 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Oppgi en gyldig dato på formen ÅÅÅÅ-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:612 #, python-format msgid "Invalid date: %s" msgstr "Ugyldig dato: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:693 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Oppgi dato og tid på formen ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:695 +msgid "Date (with time)" +msgstr "Dato (med tid)" + +#: db/models/fields/__init__.py:761 msgid "This value must be a decimal number." msgstr "Verdien må være et desimaltall." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:763 +msgid "Decimal number" +msgstr "Desimaltall" + +#: db/models/fields/__init__.py:818 +msgid "E-mail address" +msgstr "E-postadresse" + +#: db/models/fields/__init__.py:825 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Filsti" + +#: db/models/fields/__init__.py:848 msgid "This value must be a float." msgstr "Verdien må være et flyttall." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:850 +msgid "Floating point number" +msgstr "Flyttall" + +#: db/models/fields/__init__.py:903 +msgid "Big (8 byte) integer" +msgstr "Stort (8 byte) heltall" + +#: db/models/fields/__init__.py:932 msgid "This value must be either None, True or False." msgstr "Verdien må være None, True eller False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:934 +msgid "Boolean (Either True, False or None)" +msgstr "Boolsk (True, False eller None)" + +#: db/models/fields/__init__.py:1025 +msgid "Text" +msgstr "Tekst" + +#: db/models/fields/__init__.py:1041 +msgid "Time" +msgstr "Tid" + +#: db/models/fields/__init__.py:1045 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Oppgi tiden på formen TT:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1129 +msgid "XML text" +msgstr "XML-tekst" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Modell %(model)s med primærnøkkelen %(pk)r finnes ikke." + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "Fremmednøkkel (type bestemmes av relatert felt)" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "En-til-en-relasjon" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "Mange-til-mange-relasjon" + +#: db/models/fields/related.py:959 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1020 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3922,88 +4671,64 @@ msgstr[0] "Oppgi gyldige %(self)s-ID-er. Verdien %(value)r er ugyldig." msgstr[1] "Oppgi gyldige %(self)s-ID-er. Verdiene %(value)r er ugyldige." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Feltet er påkrevet." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Oppgi en gyldig verdi." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Verdien kan maksimalt ha %(max)d tegn (den er %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "Verdien må minimum ha %(min)d tegn (den er %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:195 msgid "Enter a whole number." msgstr "Oppgi et heltall." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Verdien må være mindre enn eller lik %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Verdien må være større enn eller lik %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:225 forms/fields.py:245 msgid "Enter a number." msgstr "Oppgi et tall." -#: forms/fields.py:227 +#: forms/fields.py:248 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Verdien kan ikke ha mer enn %s siffer totalt." -#: forms/fields.py:228 +#: forms/fields.py:249 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Verdien kan ikke ha mer enn %s desimaler." -#: forms/fields.py:229 +#: forms/fields.py:250 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Verdien kan ikke ha mer enn %s siffer foran komma." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:311 forms/fields.py:826 msgid "Enter a valid date." msgstr "Oppgi en gyldig dato." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:339 forms/fields.py:827 msgid "Enter a valid time." msgstr "Oppgi et gyldig tidspunkt." -#: forms/fields.py:361 +#: forms/fields.py:365 msgid "Enter a valid date/time." msgstr "Oppgi gyldig dato og tidspunkt." -#: forms/fields.py:447 +#: forms/fields.py:423 msgid "No file was submitted. Check the encoding type on the form." msgstr "Ingen fil ble sendt. Sjekk \"encoding\"-typen på skjemaet." -#: forms/fields.py:448 +#: forms/fields.py:424 msgid "No file was submitted." msgstr "Ingen fil ble sendt." -#: forms/fields.py:449 +#: forms/fields.py:425 msgid "The submitted file is empty." msgstr "Filen er tom." -#: forms/fields.py:450 +#: forms/fields.py:426 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "Filnavnet kan maksimalt ha %(max)d tegn (det har %(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:461 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4011,111 +4736,82 @@ "Last opp et gyldig bilde. Filen du lastet opp var ødelagt eller ikke et " "bilde." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Oppgi en gyldig nettadresse." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Nettadressen fører til en side som ikke eksisterer." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:584 forms/fields.py:659 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:660 forms/fields.py:722 forms/models.py:986 msgid "Enter a list of values." msgstr "Oppgi en liste med verdier." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Oppgi en gyldig IPv4-adresse." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Oppgi en gyldig 'slug' bestående av bokstaver, nummer, understreker eller " -"bindestreker." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:290 forms/formsets.py:292 msgid "Order" msgstr "Rekkefølge" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s må være unik for %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s med %(field_label)s finnes allerede." - -#: forms/models.py:594 +#: forms/models.py:547 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Vennligst korriger duplisert data for %(field)s." -#: forms/models.py:598 +#: forms/models.py:551 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Vennligst korriger duplisert data for %(field)s, som må være unik." -#: forms/models.py:604 +#: forms/models.py:557 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -"Vennligst korriger duplisert data for %(field_name)s, som må være unik for " -"%(lookup)s i %(date_field)s." - -#: forms/models.py:612 +"Vennligst korriger duplisert data for %(field_name)s, som må være unik for %" +"(lookup)s i %(date_field)s." + +#: forms/models.py:565 msgid "Please correct the duplicate values below." msgstr "Vennligst korriger de dupliserte verdiene nedenfor." -#: forms/models.py:867 +#: forms/models.py:839 msgid "The inline foreign key did not match the parent instance primary key." msgstr "Primærnøkkelen er ikke den samme som foreldreinstansens primærnøkkel." -#: forms/models.py:930 +#: forms/models.py:905 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Velg et gyldig valg. Valget er ikke et av de tilgjengelige valgene." -#: forms/models.py:1004 +#: forms/models.py:987 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Velg et gyldig valg. %s er ikke et av de tilgjengelige valgene." -#: forms/models.py:1006 +#: forms/models.py:989 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" er ikke en gyldig verdi for en primærnøkkel." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "ja,nei,kanskje" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4324,7 +5020,7 @@ msgid "Dec." msgstr "des." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "eller" @@ -4378,33 +5074,76 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j. F Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. F Y H:i" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s ble opprettet." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s ble oppdatert." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s ble slettet." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "En eller flere %(fieldname)s i %(name)s:" + +#~ msgid "Old password:" +#~ msgstr "Gammelt passord:" + +#~ msgid "Relation to parent model" +#~ msgstr "Relasjon til foreldermodell" + +#~ msgid "Add user" +#~ msgstr "Opprett ny bruker" + +#~ msgid "Comment moderation queue" +#~ msgstr "Kommentarmoderasjonskø" + +#~ msgid "No comments to moderate" +#~ msgstr "Ingen kommentarer å moderere" + +#~ msgid "Email" +#~ msgstr "E-post" + +#~ msgid "Authenticated?" +#~ msgstr "Godkjent?" + +#~ msgid "IP Address" +#~ msgstr "IP-adresse" + +#~ msgid "Date posted" +#~ msgstr "Dato lagt inn" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "no" +#~ msgstr "nei" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/no/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/no/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/no/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/no/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/no/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -1,4 +1,5 @@ -# translation of djangojs.po to norwegian +# This is the *old* Norwegian (Bokmål) translation of Django javascript +# For future updates please use the translation in the "nb" directory. # Copyright (C) 2005 and beyond # This file is distributed under the same license as the Django package. # @@ -7,40 +8,40 @@ "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" -"PO-Revision-Date: 2008-08-29 16:12+0200\n" +"PO-Revision-Date: 2010-03-11 18:06+0100\n" "Last-Translator: Christian Mikalsen and Jon Lønne\n" "Language-Team: Norsk \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "Tilgjengelige %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Velg alle" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Ny" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Slett" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "Valgte %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Velg ditt valg og klikk " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Fjern alle" @@ -57,62 +58,63 @@ msgid "S M T W T F S" msgstr "S M T O T F L" +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Vis" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Skjul" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Vis" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Skjul" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:50 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Now" msgstr "Nå" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:54 msgid "Clock" msgstr "Klokke" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Choose a time" msgstr "Velg et klokkeslett" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "Midnight" msgstr "Midnatt" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "6 a.m." msgstr "06:00" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 msgid "Noon" msgstr "12:00" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:92 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Avbryt" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "I dag" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Kalender" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "I går" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "I morgen" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/no/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/no/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/no/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,34 @@ +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j. F Y H:i' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y H:i' +FIRST_DAY_OF_WEEK = 1 # Monday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%j.%m.%Y', '%j.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' + '%Y-%m-%j', # '2006-10-25', + # '%j. %b %Y', '%j %b %Y', # '25. okt 2006', '25 okt 2006' + # '%j. %b. %Y', '%j %b. %Y', # '25. okt. 2006', '25 okt. 2006' + # '%j. %B %Y', '%j %B %Y', # '25. oktober 2006', '25 oktober 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%Y-%m-%j', # '2006-10-25' + '%j.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' + '%j.%m.%Y %H:%M', # '25.10.2006 14:30' + '%j.%m.%Y', # '25.10.2006' + '%j.%m.%y %H:%M:%S', # '25.10.06 14:30:59' + '%j.%m.%y %H:%M', # '25.10.06 14:30' + '%j.%m.%y', # '25.10.06' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pl/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/pl/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pl/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/pl/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/pl/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-17 21:59+0200\n" +"POT-Creation-Date: 2010-04-28 12:24+0200\n" "PO-Revision-Date: 2008-02-25 15:53+0100\n" "Last-Translator: Jarek Zgoda \n" "MIME-Version: 1.0\n" @@ -19,215 +19,235 @@ msgstr "arabski" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "bułgarski" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "bengalski" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "bułgarski" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "kataloński" +msgid "Bosnian" +msgstr "bośniacki" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "kataloński" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "czeski" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "walijski" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "duński" +msgid "Welsh" +msgstr "walijski" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "duński" + +#: conf/global_settings.py:52 msgid "German" msgstr "niemiecki" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "grecki" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "angielski" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "hiszpański" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "estoński" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "hiszpański argentyński" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "estoński" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "baskijski" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "perski" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "fiński" -#: conf/global_settings.py:60 -msgid "French" -msgstr "francuski" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "irlandzki" +msgid "French" +msgstr "francuski" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "galicyjski" +msgid "Frisian" +msgstr "fryzyjski" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "węgierski" +msgid "Irish" +msgstr "irlandzki" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "galicyjski" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "hebrajski" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "chorwacki" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "islandzki" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "włoski" +msgid "Hungarian" +msgstr "węgierski" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "islandzki" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "włoski" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "japoński" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "gruziński" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "koreański" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "khmerski" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "kannada" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "łotewski" - #: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "litewski" +msgid "Korean" +msgstr "koreański" #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "macedoński" +msgid "Lithuanian" +msgstr "litewski" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "holenderski" +msgid "Latvian" +msgstr "łotewski" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "norweski" +msgid "Macedonian" +msgstr "macedoński" #: conf/global_settings.py:79 +msgid "Dutch" +msgstr "holenderski" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "norweski" + +#: conf/global_settings.py:81 msgid "Polish" msgstr "polski" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "portugalski" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "brazylijski portugalski" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "rumuński" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "rosyjski" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "słowacki" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "słoweński" -#: conf/global_settings.py:86 +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "albański" + +#: conf/global_settings.py:89 msgid "Serbian" msgstr "serbski" -#: conf/global_settings.py:87 +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "serbski (łaciński)" + +#: conf/global_settings.py:91 msgid "Swedish" msgstr "szwedzki" -#: conf/global_settings.py:88 +#: conf/global_settings.py:92 msgid "Tamil" msgstr "tamilski" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "tajski" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "turecki" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "ukraiński" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "wietnamski" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "chiński uproszczony" -#: conf/global_settings.py:94 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "chiński tradycyjny" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Usunięto %(count)d %(items)s." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 msgid "Are you sure?" msgstr "Jesteś pewien?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Usuń wybrane %(verbose_name_plural)s" @@ -266,19 +286,19 @@ msgid "This year" msgstr "Ten rok" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Tak" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Nie" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Nieznany" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Akcja:" @@ -310,87 +330,97 @@ msgid "log entries" msgstr "logi" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "brak" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "Zmieniono %s" -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 msgid "and" msgstr "i" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Dodano %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Zmieniono %(list)s w %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Usunięto %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Żadne pole nie zmienione." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" dodany pomyślnie." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "Możesz ponownie edytować wpis poniżej." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Możesz dodać nowy wpis %s poniżej." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:690 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "" "%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Wykonanie akcji wymaga wybrania obiektów. Żaden obiekt nie został zmieniony." + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "Nie wybrano akcji." + +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "Dodaj %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Obiekt %(name)s o kluczu głównym %(key)r nie istnieje." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" msgstr "Zmień %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:978 msgid "Database error" msgstr "Błąd bazy danych" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1014 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." @@ -398,18 +428,31 @@ msgstr[1] "%(count)s %(name)s zostały pomyślnie zmienione." msgstr[2] "%(count)s %(name)s zostało pomyślnie zmienionych." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s wybrany" +msgstr[1] "%(total_count)s wybrane" +msgstr[2] "%(total_count)s wybranych" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 z %(cnt)s wybranych" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "Historia zmian: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -417,11 +460,11 @@ "Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma " "znaczenie." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Twoja sesja wygasła, zaloguj się ponownie." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -429,62 +472,52 @@ "Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i " "spróbuj ponownie." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Nazwy użytkowników nie mogą zawierać znaku '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Podany adres e-mail nie jest Twoją nazwą użytkownika. Spróbuj '%s'." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Administracja stroną" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Zaloguj się" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "%s - administracja" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Jedno lub więcej %(fieldname)s w %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Data:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Czas:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Teraz:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Zmień:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Szukaj" -#: contrib/admin/widgets.py:235 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Dodaj kolejny" @@ -499,17 +532,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -535,9 +568,8 @@ "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 "" -"Wystąpił niespodziewany błąd. Raport został wysłany e-mailem " -"administratorowi strony i powinien zostać wkrótce naprawiony. Dziękujemy za " -"cierpliwość." +"Wystąpił niespodziewany błąd. Został on zgłoszony e-mailem administratorowi " +"strony i powinien zostać wkrótce naprawiony. Dziękujemy za cierpliwość." #: contrib/admin/templates/admin/actions.html:4 msgid "Run the selected action" @@ -547,34 +579,47 @@ msgid "Go" msgstr "Wykonaj" +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Kliknij by wybrać obiekty na wszystkich stronach" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Wybierz wszystkie %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Wyczyść wybór" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Witaj," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentacja" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Zmiana hasła" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Wyloguj się" @@ -586,42 +631,43 @@ msgid "Django administration" msgstr "Administracja Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Dodaj" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Historia" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Pokaż na stronie" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Proszę popraw poniższy błąd." msgstr[1] "Proszę popraw poniższe błędy." msgstr[2] "Proszę popraw poniższe błędy." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Dodaj %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtr" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Usuń" @@ -668,10 +714,10 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" -"Czy chcesz skasować %(object_name)s? Następujące obiekty i zależne od nich " -"zostaną skasowane:" +"Czy chcesz skasować wybrane %(object_name)s? Następujące obiekty i zależne " +"od nich zostaną skasowane:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -734,15 +780,9 @@ msgstr "Użytkownik" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Akcja" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "Y-m-d H:i:s" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -789,7 +829,7 @@ msgid "Save and continue editing" msgstr "Zapisz i kontynuuj edycję" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -797,33 +837,39 @@ "Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować " "więcej opcji użytkownika." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Nazwa użytkownika" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Hasło" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Hasło (powtórz)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Podaj powyższe hasło w celu weryfikacji." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Podaj nowe hasło dla użytkownika %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Hasło" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Hasło (powtórz)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Podaj powyższe hasło w celu weryfikacji." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Dodaj kolejne %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Usuń" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Usunąć?" @@ -837,9 +883,9 @@ msgstr "Zaloguj się ponownie" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Zmiana hasła" @@ -852,27 +898,23 @@ msgid "Your password was changed." msgstr "Twoje hasło zostało zmienione." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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 "Podaj swoje stare hasło i dwa razy nowe." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Stare hasło:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nowe hasło:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Potwierdź hasło:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Stare hasło" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nowe hasło" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Zmień hasło" @@ -911,6 +953,14 @@ "Podaj dwukrotnie nowe hasło, by można było zweryfikować, czy zostało wpisane " "poprawnie." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nowe hasło:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Potwierdź hasło:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Resetowanie hasła nieudane" @@ -978,7 +1028,7 @@ msgid "Reset my password" msgstr "Zresetuj moje hasło" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Wszystkie daty" @@ -992,11 +1042,11 @@ msgid "Select %s to change" msgstr "Zaznacz %s aby zmienić" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "strona" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "szablon" @@ -1056,89 +1106,7 @@ msgid "Fields on %s objects" msgstr "Pola obiektów %s" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Liczba całkowita" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Wartość logiczna (True, False - prawda lub fałsz)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Łańcuch (do %(max_length)s znaków)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Liczby całkowite rozdzielone przecinkami" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Data (bez godziny)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Data (z godziną)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Liczba dziesiętna" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "Adres e-mail" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Ścieżka do pliku" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Liczba zmiennoprzecinkowa" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "Adres IP" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Relacja do modelu rodzica" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Numer telefonu" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Tekst" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Czas" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Stan USA (dwie duże litery)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "Tekst XML" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s nie jest obiektem urlpattern" @@ -1211,66 +1179,61 @@ msgid "As above, but opens the admin page in a new window." msgstr "Jak wyżej, tyle że otwiera nowe okno." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Dane osobowe" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Uprawnienia" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Ważne daty" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupy" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Dodaj użytkownika" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Hasło zostało zmienione pomyślnie." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Zmień hasło: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Wymagane. 30 znaków lub mniej. Tylko znaki alfanumeryczne (litery, cyfry i " -"podkreślenia)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "To pole może zawierać tylko litery, cyfry i podkreślenia." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Nazwa użytkownika" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "Wymagane. 30 znaków lub mniej. Tylko litery, cyfry i znaki @/./+/-/_." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "To pole może zawierać tylko litery, cyfry i znaki @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Potwierdzenie hasła" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Użytkownik o tej nazwie już istnieje." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Hasła się nie zgadzają." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "To konto jest nieaktywne." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1278,11 +1241,11 @@ "Twoja przeglądarka nie chce akceptować ciasteczek. Są one wymagane do " "zalogowania się." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-mail" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1290,72 +1253,69 @@ "Ten adres e-mail nie ma przypisanego konta. Jesteś pewien, że " "zarejestrowałeś się?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Hasło zresetowane dla %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nowe hasło" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Nowe hasło ponownie" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Stare hasło" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nazwa" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "nazwa kodowa" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "uprawnienie" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "uprawnienia" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "grupa" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupy" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "użytkownik" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Wymagane. 30 znaków lub mniej. Tylko litery, cyfry i znaki @/./+/-/_." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "imię" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "nazwisko" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "adres e-mail" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "hasło" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1363,19 +1323,19 @@ "Użyj '[algo]$[salt]$[hexdigest]' lub formularza zmiany " "hasła." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "w zespole" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Oznacza czy użytkownik może zalogować się do panelu admina." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "aktywny" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1383,11 +1343,11 @@ "Oznacza czy użytkownika należy uważać za aktywnego. Odznacz to, zamiast " "usuwać konta." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "status administratora" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1395,15 +1355,15 @@ "Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego " "przypisywania ich." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "ostatnio zalogowany" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "data przyłączenia" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1411,39 +1371,81 @@ "Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on " "uprawnienia grup, do których należy." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "uprawnienia użytkownika" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "użytkownik" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "użytkownicy" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "wiadomość" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Wylogowany" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Wprowadź poprawny adres e-mail." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Zawartość" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadane" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "oflagowany" +msgstr[1] "oflagowane" +msgstr[2] "oflagowanych" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Oflaguj wybrane komentarze" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "zaakceptowany" +msgstr[1] "zaakceptowane" +msgstr[2] "zaakceptowanych" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Zaakceptuj wybrane komentarze" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "usunięty" +msgstr[1] "usunięte" +msgstr[2] "usuniętych" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Usuń wybrane komentarze" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 komentarz został %(action)s" +msgstr[1] "%(count)s komentarze zostały %(action)s" +msgstr[2] "%(count)s komentarzy zostało %(action)s" + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1455,7 +1457,6 @@ msgstr "Ostatnie komentarze na %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nazwa" @@ -1463,12 +1464,16 @@ msgid "Email address" msgstr "Adres e-mail" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Komentarz" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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." @@ -1476,13 +1481,13 @@ msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone." msgstr[2] "Nie wolno przeklinać! Słowa %s nie są dozwolone." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Jeżeli wpiszesz cokolwiek w to pole, Twój komentarz zostanie uznany za spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "typ zawartości" @@ -1511,6 +1516,10 @@ msgid "date/time submitted" msgstr "data/czas dodania" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "Adres IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "publicznie dostępny" @@ -1592,7 +1601,6 @@ msgstr "Czy ten komentarz na pewno ma być publiczny?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Zaakceptuj" @@ -1617,11 +1625,6 @@ msgid "Really remove this comment?" msgstr "Czy na pewno usunąć ten komentarz?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Usuń" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Dziękujemy za usunięcie" @@ -1652,39 +1655,6 @@ msgid "Preview" msgstr "Podgląd" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Kolejka moderacji komentarzy" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Żaden komentarz nie oczekuje na akceptację" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "E-mail" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Zalogowany?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Adres IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Data dodania" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "tak" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "nie" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Dziękujemy za dodanie komentarza" @@ -1713,11 +1683,11 @@ msgid "or make changes" msgstr "lub wprowadź jakieś zmiany" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "nazwa pythonowa modelu klasy" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "typy zawartości" @@ -1781,7 +1751,7 @@ msgid "flat pages" msgstr "strony statyczne" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1789,6 +1759,39 @@ "Przepraszamy, ale Twój formularz wygasł. Proszę kontynuować wypełnianie " "formularza od tej strony." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Podstawowe pole GIS - odpowiada typowi Geometry w specyfikacji OpenGIS." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Punkt" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Ścieżka" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Wielokąt" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Zbiór punktów" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Zbiór ścieżek" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Zbiór wielokątów" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Zbiór geometrii" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Brak wartości geometrii." @@ -1897,25 +1900,25 @@ msgid "yesterday" msgstr "wczoraj" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Wpisz kod pocztowy w formacie NNNN lub ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "To pole może zawierać jedynie liczby." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "To pole musi zawierać 7 lub 8 cyfr." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Podaj poprawny numer CUIT w formacie XX-XXXXXXXX-X lub XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Niepoprawny CUIT" @@ -1955,8 +1958,8 @@ msgid "Vienna" msgstr "Wiedeń" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Wpisz kod pocztowy w formacie XXXX." @@ -1965,19 +1968,19 @@ msgstr "" "Wpisz poprawny numer austriackiego ubezpieczenia w formacie XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Wpisz czterocyfrowy kod pocztowy." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Wpisz kod pocztowy w formacie XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Numery telefoniczne muszą być w formacie XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1985,27 +1988,27 @@ "Wybierz poprawny brazylijski stan. Ten stan nie jest jednym z dostępnych " "stanów." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Błędny numer CPF." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "To pole nie może zawierać więcej niż 11 cyfr lub 14 znaków." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Błędny numer CNPJ." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "To pole musi zawierać co najmniej 14 cyfr" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Wpisz kod pocztowy w formacie XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Wpisz poprawny numer kanadyjskiego ubezpieczenia w formacie XXX-XXX-XXXX." @@ -2114,7 +2117,7 @@ msgid "Zurich" msgstr "Zurych" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2122,15 +2125,15 @@ "Podaj poprawny numer szwajcarskiego dowodu osobistego lub paszportu w " "formacie X1234567<0 lub 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Wpisz poprawny chilijski RUT." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Podaj poprawny chilijski RUT w formacie XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Podany chilijski RUT jest nieprawidłowy." @@ -2190,23 +2193,23 @@ msgid "Moravian-Silesian Region" msgstr "Kraj morawski-śląski" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Wpisz kod pocztowy w formacie XXXXX or XXX XX." -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Wpisz numer urodzenia w formacie XXXXXX/XXXX or XXXXXXXXXX." - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Niepoprawny dodatkowy parametr płci, wartości poprawne to 'f' i 'm'" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Wpisz numer urodzenia w formacie XXXXXX/XXXX or XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Niepoprawny dodatkowy parametr płci, wartości poprawne to 'f' i 'm'" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Wpisz poprawny numer urodzenia." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Wpisz poprawny numer IC." @@ -2274,12 +2277,12 @@ msgid "Thuringia" msgstr "Turyngia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Wpisz kod pocztowy w formacie XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2554,74 +2557,506 @@ msgid "Valencian Community" msgstr "Walencja" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Wpisz kod pocztowy w zakresie i formacie 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." msgstr "" "Wpisz numer telefoniczny w formacie 6XXXXXXXX, 8XXXXXXXX lub 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Proszę wpisać poprawny numer NIF, NIE lub CIF." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Proszę wpisać poprawny numer NIF lub NIE." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Niepoprawna suma kontrolna NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Niepoprawna suma kontrolna NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Niepoprawna suma kontrolna CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Podaj poprawny numer konta bankowego w formacie XXXX-XXXX-XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Niepoprawna suma kontrolna numeru konta bankowego." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Wpis poprawny numer fińskiego ubezpieczenia socjalnego." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Numery telefoniczne muszą być w formacie 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Wpisz poprawny kod pocztowy" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Wpisz poprawny numer telefonu" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Wpisz poprawny numer rejestracyjny pojazdu" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Wpisz poprawny numer NIK/KTP." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Wpisz kod pocztowy w formacie XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Podaj poprawny numer islandzkiego dowodu osobistego w formacie XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Numer islandzkiego dowodu osobistego jest błędny." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Wpisz poprawny kod pocztowy." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Wpisz poprawny numer ubezpieczenia socjalnego." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Wpisz poprawny numer VAT." @@ -2817,6 +3252,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Wpisz poprawny kuwejcki numer ID" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2945,15 +3384,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Wpisz poprawny kod pocztowy" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Wpisz poprawny numer telefonu" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Wpisz poprawny numer SoFi" @@ -3005,15 +3440,15 @@ msgid "Zuid-Holland" msgstr "Holandia Południowa" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Wpis poprawny numer norweskiego ubezpieczenia socjalnego." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "To pole musi zawierać 8 cyfr." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "To pole musi zawierać 11 cyfr." @@ -3110,6 +3545,14 @@ msgid "West Pomerania" msgstr "Zachodniopomorskie" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Wpisz kod pocztowy w formacie XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "Numery telefonów muszą mieć 9 cyfr lub zaczynać się od + albo 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Wpisz poprawny CIF." @@ -3130,6 +3573,108 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Wpisz kod pocztowy w formacie XXXXXX." +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Wpisz poprawny szwedzki numer organizacji." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Wpis poprawny szwedzki numer identyfikacji osobistej." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Wpisz szwedzki kod pocztowy w formacie XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Sztokholm" + +# while Stockholm is translated, other administrative unit names are *not* +# translated to Polish, according to Encyklopedia PWN +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Bańska Bystrzyca" @@ -3762,19 +4307,44 @@ msgid "Wales" msgstr "Walia" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Wpisz kod pocztowy w formacie XXXXX. lub XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Numery telefoniczne muszą być w formacie XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "Wpisz poprawny numer U.S. Social Security w formacie XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Podaj stan lub terytorium USA." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Stan USA (dwie duże litery)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Numer telefonu" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Wprowadź poprawny numer CI w formacie X.XXX.XXX-X, XXXXXXX-X lub XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Wpisz poprawny numer CI." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Wpisz poprawny południowoafrykański numer ID" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Wpisz poprawny południowoafrykański kod pocztowy" @@ -3814,6 +4384,10 @@ msgid "Western Cape" msgstr "Prowincja Przylądkowa Zachodnia" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "testowa wiadomość z opóźnioną ewaluacją" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "przekieruj z" @@ -3874,62 +4448,223 @@ msgid "sites" msgstr "strony" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Wpisz poprawną wartość." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Wpisz poprawny URL." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Ten odnośnik jest nieprawidłowy." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i myślniki." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Wprowadź poprawny adres IPv4." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Wpisz tylko cyfry oddzielone przecinkami." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Upewnij się, że ta wartość jest %(limit_value)s (jest %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Upewnij się, że ta wartość jest większa lub równa %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Upewnij się, że ta wartość ma co najmniej %(limit_value)d znaków (ma długość " +"%(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Upewnij się, że ta wartość ma co najwyżej %(limit_value)d znaków (ma długość " +"%(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" +"Wartości w %(field_name)s muszą być unikalne dla wyszukiwań %(lookup)s w %" +"(date_field)s" + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(field_label)s już istnieje w %(model_name)s." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Wartość %r nie jest poprawnym wyborem." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "To pole nie może być puste." + +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "To pole nie może być puste." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Pole typu: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Liczba całkowita" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 msgid "This value must be an integer." msgstr "Ta wartość musi być liczbą całkowitą." -#: db/models/fields/__init__.py:388 +#: db/models/fields/__init__.py:490 msgid "This value must be either True or False." msgstr "" "Ta wartość musi być wartością logiczną (True, False - prawda lub fałsz)." -#: db/models/fields/__init__.py:427 -msgid "This field cannot be null." -msgstr "To pole nie może być puste." - -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Wpisz tylko cyfry oddzielone przecinkami." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Wartość logiczna (True, False - prawda lub fałsz)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Łańcuch (do %(max_length)s znaków)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Liczby całkowite rozdzielone przecinkami" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Data (bez godziny)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Niepoprawna data: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Wprowadź poprawną datę i godzinę w formacie YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Data (z godziną)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Ta wartość musi być liczbą dziesiętną." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Liczba dziesiętna" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Adres e-mail" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Ścieżka do pliku" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Ta wartość musi być liczbą rzeczywistą." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Liczba zmiennoprzecinkowa" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Duża liczba całkowita (8 bajtów)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "" "Ta wartość musi być jedną z None (nic), True (prawda) lub False (fałsz)." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Tekst" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Czas" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Proszę wpisać poprawną godzinę w formacie HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "Tekst XML" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Model %(model)s o kluczu głównym %(pk)r nie istnieje." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Klucz obcy (typ określony przez pole powiązane)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "Powiązanie jeden do jednego" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Powiązanie wiele do wiele" + +#: db/models/fields/related.py:1000 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Przytrzymaj wciśnięty klawisz \"Ctrl\" lub \"Command\" na Mac'u aby " "zaznaczyć więcej niż jeden wybór." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3944,86 +4679,58 @@ "Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są " "niepoprawne." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "To pole jest wymagane." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Wpisz poprawną wartość." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Upewnij się, że ta wartość ma co najwyżej %(max)d znaków (ma długość %" -"(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Upewnij się, że ta wartość ma co najmniej %(min)d znaków (ma długość %" -"(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Wpisz liczbę całkowitą." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Upewnij się, że ta wartość jest większa lub równa %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Wpisz liczbę." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Upewnij się, że jest nie więcej niż %s cyfr." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Upewnij się, że jest nie więcej niż %s miejsc po przecinku." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Upewnij się, że jest nie więcej niż %s miejsc przed przecinkiem." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Wpisz poprawną datę." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Wpisz poprawną godzinę." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Wpisz poprawną datę/godzinę." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Żaden plik nie został przesłany." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Wysłany plik jest pusty." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4031,7 +4738,7 @@ "Upewnij się, że nazwa tego pliku ma co najwyżej %(max)d znaków (ma długość %" "(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4039,60 +4746,31 @@ "Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, " "albo jest uszkodzony." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Wpisz poprawny URL." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Ten odnośnik jest nieprawidłowy." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Wybierz poprawną wartość. %(value)s nie jest jednym z dostępnych wyborów." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 msgid "Enter a list of values." msgstr "Podaj listę wartości." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Wprowadź poprawny adres IPv4." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i myślniki." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Porządek" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "" -"Wartości w %(field_name)s muszą być unikalne dla wyszukiwań %(lookup)s w %" -"(date_field)s" - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(field_label)s już istnieje w %(model_name)s." - -#: forms/models.py:594 +#: forms/models.py:567 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Popraw zduplikowane dane w %(field)s." -#: forms/models.py:598 +#: forms/models.py:571 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "Popraw zduplikowane dane w %(field)s, które wymaga unikalności." -#: forms/models.py:604 +#: forms/models.py:577 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4101,33 +4779,33 @@ "Popraw zduplikowane dane w %(field_name)s, które wymaga unikalności dla %" "(lookup)s w polu %(date_field)s." -#: forms/models.py:612 +#: forms/models.py:585 msgid "Please correct the duplicate values below." msgstr "Popraw poniższe zduplikowane wartości." -#: forms/models.py:867 +#: forms/models.py:860 msgid "The inline foreign key did not match the parent instance primary key." msgstr "Osadzony klucz obcy nie pasuje do klucza głównego obiektu rodzica." -#: forms/models.py:930 +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów." -#: forms/models.py:1004 +#: forms/models.py:1008 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Wybierz poprawną wartość. %s nie jest jednym z dostępnych wyborów." -#: forms/models.py:1006 +#: forms/models.py:1010 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" nie jest poprawną wartością klucza głównego." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "tak,nie,może" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" @@ -4135,17 +4813,17 @@ msgstr[1] "%(size)d bajty" msgstr[2] "%(size)d bajtów" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4354,7 +5032,7 @@ msgid "Dec." msgstr "Gru." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "lub" @@ -4414,33 +5092,81 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "Y-m-d" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "Y-m-d H:i:s" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "H:i:s" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "Y-m" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "m-d" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s zostało pomyślnie utworzone." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s zostało pomyślnie zmienione." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s zostało usunięte." + +#~ msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +#~ msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s" + +#~ msgid "One or more %(fieldname)s in %(name)s:" +#~ msgstr "Jedno lub więcej %(fieldname)s w %(name)s:" + +#~ msgid "" +#~ "0 of %(total_count)s %(module_name)s selected" +#~ msgstr "" +#~ "0 z %(total_count)s %(module_name)s wybrane" + +#~ msgid "Old password:" +#~ msgstr "Stare hasło:" + +#~ msgid "Add user" +#~ msgstr "Dodaj użytkownika" + +#~ msgid "Relation to parent model" +#~ msgstr "Relacja do modelu rodzica" + +#~ msgid "Comment moderation queue" +#~ msgstr "Kolejka moderacji komentarzy" + +#~ msgid "No comments to moderate" +#~ msgstr "Żaden komentarz nie oczekuje na akceptację" + +#~ msgid "Email" +#~ msgstr "E-mail" + +#~ msgid "Authenticated?" +#~ msgstr "Zalogowany?" + +#~ msgid "IP Address" +#~ msgstr "Adres IP" + +#~ msgid "Date posted" +#~ msgstr "Data dodania" + +#~ msgid "yes" +#~ msgstr "tak" + +#~ msgid "no" +#~ msgstr "nie" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pl/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pl/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/pl/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd-m-Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/pt/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/pt/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/pt/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-23 09:34+0100\n" -"PO-Revision-Date: 2009-07-23 10:43+0100\n" +"POT-Creation-Date: 2010-05-01 21:26+0200\n" +"PO-Revision-Date: 2010-03-09 10:45+0000\n" "Last-Translator: Nuno Mariz \n" "Language-Team: pt_PT \n" "MIME-Version: 1.0\n" @@ -18,215 +18,247 @@ msgstr "Árabe" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "Bengalês" +msgid "Bulgarian" +msgstr "Búlgaro" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Búlgaro" +msgid "Bengali" +msgstr "Bengalês" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "Bósnio" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "Catalão" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "Checo" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "Galês" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Danish" msgstr "Dinamarquês" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "German" msgstr "Alemão" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Grego" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Inglês" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "British English" +msgstr "Inglês Britânico" + +#: conf/global_settings.py:56 msgid "Spanish" msgstr "Espanhol" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estónio" - -#: conf/global_settings.py:56 -msgid "Argentinean Spanish" -msgstr "Espanhol Argentino" - #: conf/global_settings.py:57 -msgid "Basque" -msgstr "Basco" +msgid "Argentinean Spanish" +msgstr "Espanhol Argentino" #: conf/global_settings.py:58 +msgid "Estonian" +msgstr "Estónio" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "Basco" + +#: conf/global_settings.py:60 msgid "Persian" msgstr "Persa" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Finnish" msgstr "Filandês" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "French" msgstr "Francês" -#: conf/global_settings.py:61 -msgid "Irish" -msgstr "Irlandês" - -#: conf/global_settings.py:62 -msgid "Galician" -msgstr "Galaciano" - #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Húngaro" +msgid "Frisian" +msgstr "Frisão" #: conf/global_settings.py:64 -msgid "Hebrew" -msgstr "Hebraico" +msgid "Irish" +msgstr "Irlandês" #: conf/global_settings.py:65 -msgid "Hindi" -msgstr "" +msgid "Galician" +msgstr "Galaciano" #: conf/global_settings.py:66 -msgid "Croatian" -msgstr "Croata" +msgid "Hebrew" +msgstr "Hebraico" #: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Islandês" +msgid "Hindi" +msgstr "Hindi" #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Italiano" +msgid "Croatian" +msgstr "Croata" #: conf/global_settings.py:69 -msgid "Japanese" -msgstr "Japonês" +msgid "Hungarian" +msgstr "Húngaro" #: conf/global_settings.py:70 -msgid "Georgian" -msgstr "Georgiano" +msgid "Icelandic" +msgstr "Islandês" #: conf/global_settings.py:71 -msgid "Korean" -msgstr "Coreano" +msgid "Italian" +msgstr "Italiano" #: conf/global_settings.py:72 +msgid "Japanese" +msgstr "Japonês" + +#: conf/global_settings.py:73 +msgid "Georgian" +msgstr "Georgiano" + +#: conf/global_settings.py:74 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Kannada" msgstr "Canarês" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Letão" - -#: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "Lituano" - #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "Macedónio" +msgid "Korean" +msgstr "Coreano" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "Holandês" +msgid "Lithuanian" +msgstr "Lituano" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Norueguês" +msgid "Latvian" +msgstr "Letão" #: conf/global_settings.py:79 +msgid "Macedonian" +msgstr "Macedónio" + +#: conf/global_settings.py:80 +msgid "Dutch" +msgstr "Holandês" + +#: conf/global_settings.py:81 +msgid "Norwegian" +msgstr "Norueguês" + +#: conf/global_settings.py:82 +msgid "Norwegian Bokmal" +msgstr "Norueguês (Bokmål)" + +#: conf/global_settings.py:83 +msgid "Norwegian Nynorsk" +msgstr "Norueguês (Nynors)" + +#: conf/global_settings.py:84 msgid "Polish" msgstr "Polaco" -#: conf/global_settings.py:80 +#: conf/global_settings.py:85 msgid "Portuguese" msgstr "Português" -#: conf/global_settings.py:81 +#: conf/global_settings.py:86 msgid "Brazilian Portuguese" msgstr "Português Brasileiro" -#: conf/global_settings.py:82 +#: conf/global_settings.py:87 msgid "Romanian" msgstr "Romeno" -#: conf/global_settings.py:83 +#: conf/global_settings.py:88 msgid "Russian" msgstr "Russo" -#: conf/global_settings.py:84 -msgid "Slovak" -msgstr "Eslovaco" - -#: conf/global_settings.py:85 -msgid "Slovenian" -msgstr "Esloveno" - -#: conf/global_settings.py:86 -msgid "Serbian" -msgstr "Sérvio" - -#: conf/global_settings.py:87 -msgid "Swedish" -msgstr "Sueco" - -#: conf/global_settings.py:88 -msgid "Tamil" -msgstr "Tamil" - #: conf/global_settings.py:89 -msgid "Telugu" -msgstr "Telugu" +msgid "Slovak" +msgstr "Eslovaco" #: conf/global_settings.py:90 -msgid "Thai" -msgstr "Thai" +msgid "Slovenian" +msgstr "Esloveno" #: conf/global_settings.py:91 -msgid "Turkish" -msgstr "Turco" +msgid "Albanian" +msgstr "Albanês" #: conf/global_settings.py:92 +msgid "Serbian" +msgstr "Sérvio" + +#: conf/global_settings.py:93 +msgid "Serbian Latin" +msgstr "Sérvio Latim" + +#: conf/global_settings.py:94 +msgid "Swedish" +msgstr "Sueco" + +#: conf/global_settings.py:95 +msgid "Tamil" +msgstr "Tamil" + +#: conf/global_settings.py:96 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:97 +msgid "Thai" +msgstr "Thai" + +#: conf/global_settings.py:98 +msgid "Turkish" +msgstr "Turco" + +#: conf/global_settings.py:99 msgid "Ukrainian" msgstr "Ucraniano" -#: conf/global_settings.py:93 +#: conf/global_settings.py:100 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: conf/global_settings.py:101 msgid "Simplified Chinese" msgstr "Chinês Simplificado" -#: conf/global_settings.py:94 +#: conf/global_settings.py:102 msgid "Traditional Chinese" msgstr "Chinês Tradicional" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Foram removidos com sucesso %(count)d %(items)s." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 msgid "Are you sure?" msgstr "Tem a certeza?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Remover %(verbose_name_plural)s seleccionados" @@ -265,19 +297,19 @@ msgid "This year" msgstr "Este ano" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Sim" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Não" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Desconhecido" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:20 msgid "Action:" msgstr "Acção:" @@ -309,61 +341,60 @@ msgid "log entries" msgstr "entradas de log" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "Nenhum" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "Foi modificado %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 msgid "and" msgstr "e" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Foram adicionados %(name)s \"%(object)s\"." -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Foram modificados %(list)s para %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Foram removidos %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Nenhum campo foi modificado." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "Pode editá-lo(a) outra vez abaixo." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Pode adicionar outro %s abaixo." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "O(A) %(name)s \"%(obj)s\" foi modificado(a) com sucesso." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:690 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -371,44 +402,68 @@ "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso. Pode voltar a " "editar novamente abaixo." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Os itens devem ser seleccionados de forma a efectuar acções sobre eles. " +"Nenhum item foi modificado." + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "Nenhuma acção seleccionada." + +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "Adicionar %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "O object %(name)s com a chave primária %(key)r não existe." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" msgstr "Modificar %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:978 msgid "Database error" msgstr "Erro de base de dados" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1014 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s foi modificado com sucesso." msgstr[1] "%(count)s %(name)s foram modificados com sucesso." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s seleccionado" +msgstr[1] "Todos %(total_count)s seleccionados" + +#: contrib/admin/options.py:1046 +#, fuzzy, python-format +msgid "0 of %(cnt)s selected" +msgstr "de %(count)d seleccionado" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "O(A) %(name)s \"%(obj)s\" foi removido(a) com sucesso." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "Histórico de modificações: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -416,11 +471,11 @@ "Por favor introduza o utilizador e palavra-passe correctos. Note que ambos " "os casos diferenciam maiúsculas e minúsculas." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Por favor autentique-se novamente, porque a sua sessão expirou." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -428,63 +483,53 @@ "Aparentemente o seu browser não está configurado para aceitar cookies. Por " "favor active os cookies, carrege novamente a página e volte a tentar." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Nomes de utilizador não podem conter o caracter '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "O seu endereço de e-mail não é o seu nome de utilizador. Tente usar '%s'." -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Administração do site" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Entrar" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Administração de %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Um ou mais %(fieldname)s em %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Um ou mais %(fieldname)s em %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Data:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Hora:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Actualmente:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Modificar:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Procurar" -#: contrib/admin/widgets.py:235 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Adicionar Outro" @@ -499,17 +544,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -546,34 +591,47 @@ msgid "Go" msgstr "Ir" +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Seleccionar todos %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Remover selecção" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:27 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Bem-vindo," -#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentação" -#: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Modificar palavra-passe" -#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Sair" @@ -585,41 +643,42 @@ msgid "Django administration" msgstr "Administração do Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Adicionar" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "História" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Ver no site" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Por favor corrija o erro abaixo." msgstr[1] "Por favor corrija os erros abaixo." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" msgstr "Adicionar %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtro" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Remover" @@ -658,14 +717,19 @@ "Deleting the %(object_name)s would result in deleting related objects, but " "your account doesn't have permission to delete the following types of " "objects:" -msgstr "A remoção de %(object_name)s resultará na remoção de todos os objectos relacionados, mas a sua conta não tem permissões para remover os seguintes tipos de objectos:" +msgstr "" +"A remoção de %(object_name)s resultará na remoção de todos os objectos " +"relacionados, mas a sua conta não tem permissões para remover os seguintes " +"tipos de objectos:" #: contrib/admin/templates/admin/delete_selected_confirmation.html:22 #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" -msgstr "Tem a certeza que deseja remover os objectos %(object_name)s? Todos os seguintes objectos e seus itens relacionados serão removidos:" +"the following objects and their related items will be deleted:" +msgstr "" +"Tem a certeza que deseja remover os objectos %(object_name)s? Todos os " +"seguintes objectos e seus itens relacionados serão removidos:" #: contrib/admin/templates/admin/filter.html:2 #, python-format @@ -728,15 +792,9 @@ msgstr "Utilizador" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Acção" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "N j, Y, P" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -782,7 +840,7 @@ msgid "Save and continue editing" msgstr "Gravar e continuar a editar" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -790,34 +848,40 @@ "Primeiro introduza o nome do utilizador e palavra-passe. Depois poderá " "editar mais opções do utilizador." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Utilizador" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Palavra-passe" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Palavra-passe (novamente)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Introduza a palavra-passe como acima, para verificação." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" "Introduza uma nova password para o utilizador %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Palavra-passe" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Palavra-passe (novamente)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Introduza a palavra-passe como acima, para verificação." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Adicionar outro %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Remover" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Remover?" @@ -831,9 +895,9 @@ msgstr "Entrar novamente" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Modificação da palavra-passe" @@ -846,7 +910,7 @@ msgid "Your password was changed." msgstr "A sua palavra-passe foi modificada." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -855,21 +919,17 @@ "depois introduza a nova duas vezes para que possamos verificar se introduziu " "correctamente." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Palavra-passe antiga:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nova palavra-passe:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Confirmação da palavra-passe:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Palavra-passe antiga" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nova palavra-passe" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Modificar a minha palavra-passe" @@ -908,6 +968,14 @@ "Por favor, introduza a sua nova palavra-passe duas vezes para verificarmos " "se está correcta." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nova palavra-passe:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Confirmação da palavra-passe:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Palavra-passe reinicializada sem sucesso" @@ -978,7 +1046,7 @@ msgid "Reset my password" msgstr "Reinicializar a minha palavra-passe" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Todas as datas" @@ -992,11 +1060,11 @@ msgid "Select %s to change" msgstr "Seleccione %s para modificar" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "site" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "template" @@ -1013,7 +1081,7 @@ #: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 #: contrib/admindocs/views.py:162 msgid "view:" -msgstr "ver:" +msgstr "view:" #: contrib/admindocs/views.py:190 #, python-format @@ -1056,89 +1124,7 @@ msgid "Fields on %s objects" msgstr "Campos nos objectos %s" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Inteiro" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Boolean (Pode ser True ou False)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "String (até %(max_length)s)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Inteiros separados por virgula" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Data (sem hora)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Data (com hora)" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Número décimal" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "Endereço de e-mail" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Caminho do ficheiro" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Número em vírgula flutuante" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "Endereço IP" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Boolean (Pode ser True, False ou None)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Relação para o pai do model" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Número de telefone" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Texto" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Hora" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Estado dos E.U.A (duas letras em maiúsculas)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "Texto XML" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s não parece ser um objecto urlpattern" @@ -1212,66 +1198,63 @@ msgid "As above, but opens the admin page in a new window." msgstr "Tal como acima, mas abre a página de admin numa nova janela." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Informação pessoal" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Permissões" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Datas importantes" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupos" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Adicionar utilizador" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Palavra-passe modificada com sucesso." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Modificar a palavra-passe: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanúmericos " -"(letras, números ou underscores)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Este valor apenas poderá conter letras, números ou underscores." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Utilizador" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Obrigatório. 30 caracteres ou menos. Apenas letras, dígitos e @/./+/-/_." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "" +"Este valor apenas deverá conter letras, números e caracteres @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Confirmação da palavra-passe" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Já existe um utilizador com esse nome." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Os dois campos da palavra-passe não coincidem." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Esta conta não está activa." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1279,11 +1262,11 @@ "Aparentemente que o seu browser não está configurado para aceitar cookies. " "Os cookies são necessários para poder entrar." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-mail" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1291,74 +1274,73 @@ "Esse e-mail não tem nenhuma conta de utilizador associada. Tem a certeza que " "já se registou?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Palavra-passe reinicializada em %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nova palavra-passe" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Confirmação da nova palavra-passe" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Palavra-passe antiga" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "A sua palavra-passe antiga foi introduzida incorrectamente. Por favor tente " "novamente." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nome" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "nome de código" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "permissão" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "permissões" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "grupo" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupos" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "utilizador" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obrigatório. 30 caracteres ou menos. Apenas letras, números e caracteres @/./" +"+/-/_." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "primeiro nome" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "último nome" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "endereço de e-mail" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "palavra-passe" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1366,19 +1348,19 @@ "Use '[algo]$[salt]$[hexdigest]' ou use o formulário de " "modificação da palavra-passe." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "status de equipa" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Define se o utilizador pode usar a administração do site." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "activo" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1386,11 +1368,11 @@ "Defina se este utilizador deva ser tratado como activo. Não seleccione em " "vez de remover as contas." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "Status de superuser" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1398,15 +1380,15 @@ "Define se este utilizador tem todas as permissões sem explicitamente as " "atribuir." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "última entrada" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "data de registo" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1414,39 +1396,77 @@ "Em adição às permissões definidas manualmente, este utilizador também terá " "todas as permissões atribuídas a cada grupo a que partence." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "permissões do utilizador" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "utilizador" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "utilizadores" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "mensagem" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Saiu" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Introduza um endereço de e-mail válido." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Conteúdo" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metadata" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "marcado" +msgstr[1] "marcados" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Marcar os comentários seleccionados" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "aprovado" +msgstr[1] "aprovados" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Aprovar os comentários seleccionados" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "removido" +msgstr[1] "removidos" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Remover os comentários seleccionados" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 comentário foi %(action)s com sucesso." +msgstr[1] "%(count)s comentários foram %(action)s com sucesso." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1458,7 +1478,6 @@ msgstr "Últimos comentários em %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nome" @@ -1466,25 +1485,29 @@ msgid "Email address" msgstr "Endereço de e-mail" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Comentário" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "Atenção à linguagem! A palavra %s não é permitida aqui." msgstr[1] "Atenção à linguagem! As palavras %s não são permitidas aqui." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Se não introduzir nada neste campo o seu comentário irá ser tratado como spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "tipo de conteúdo" @@ -1513,6 +1536,10 @@ msgid "date/time submitted" msgstr "data/hora de submissão" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "Endereço IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "é público" @@ -1594,7 +1621,6 @@ msgstr "Tem a certeza que deseja tornar este comentário público?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Aprovar" @@ -1607,7 +1633,9 @@ #: contrib/comments/templates/comments/flagged.html:7 msgid "" "Thanks for taking the time to improve the quality of discussion on our site" -msgstr "Obrigado por dedicar o seu tempo para melhorar a qualidade de discussão no nosso site" +msgstr "" +"Obrigado por dedicar o seu tempo para melhorar a qualidade de discussão no " +"nosso site" #: contrib/comments/templates/comments/delete.html:4 msgid "Remove a comment" @@ -1617,11 +1645,6 @@ msgid "Really remove this comment?" msgstr "Tem a certeza que deseja remover este comentário?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Remover" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Obrigado pela remoção" @@ -1652,39 +1675,6 @@ msgid "Preview" msgstr "Prever" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Fila de moderação de comentário" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Nenhum comentário para moderar" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Email" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Autenticado?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Endereço IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Data de publicação" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "sim" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "não" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Obrigado por comentar" @@ -1712,11 +1702,11 @@ msgid "or make changes" msgstr "ou faça modificações" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "python model class name" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "tipos de conteúdos" @@ -1731,7 +1721,8 @@ "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" -"Este valor apenas poderá conter letras, números, underscores ou traços." +"Este valor apenas poderá conter letras, números, underscores, hífens ou " +"barras." #: contrib/flatpages/admin.py:22 msgid "Advanced options" @@ -1779,7 +1770,7 @@ msgid "flat pages" msgstr "páginas planas" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1787,6 +1778,38 @@ "Pedimos desculpa, mas o seu formulário expirou. Por favor continue a " "preencher o formulário a partir desta página." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Não foi submetido nenhum valor do tipo geometria." @@ -1803,7 +1826,9 @@ msgid "" "An error occurred when transforming the geometry to the SRID of the geometry " "form field." -msgstr "Ocorreu um erro na transformação da geometria para o SRID da geometria do campo do formulário." +msgstr "" +"Ocorreu um erro na transformação da geometria para o SRID da geometria do " +"campo do formulário." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1890,25 +1915,25 @@ msgid "yesterday" msgstr "ontem" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Introduza um código postal no formato NNNN ou ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Este campo apenas aceita números." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Este campo apenas aceita 7 ou 8 dígitos." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Introduza o CUIT no formato XX-XXXXXXXX-X ou XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT inválido." @@ -1948,8 +1973,8 @@ msgid "Vienna" msgstr "" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Introduza um código postal no formato XXXX." @@ -1959,19 +1984,19 @@ "Introduza um código de segurança social austríaco válido no formato XXXX " "XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Introduza um código postal de 4 dígitos." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Introduza um código postal no formato XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Os números de telefone deverão ser no formato XXX-XXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1979,27 +2004,27 @@ "Seleccione um estado brazileiro válido. Esse estado não se encontra " "disponível." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Número de CPF inválido." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Este campo aceita no máximo 11 dígitos ou 14 caracteres." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Número CNPJ inválido." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Este campo aceita no mínimo 14 dígitos" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Introduza um código postal no formato XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Introduza um código de segurança social Canadiano válido no formato XXX-XXX-" @@ -2109,7 +2134,7 @@ msgid "Zurich" msgstr "" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2117,15 +2142,15 @@ "Introduza uma identificação Suíça ou número de passaporte no formato " "X1234567<0 ou 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Introduza um RUT Chileno válido." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Introduza um RUT Chileno válido. O formato é XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "O RUT Chileno é inválido." @@ -2185,23 +2210,25 @@ msgid "Moravian-Silesian Region" msgstr "" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Introduza um código postal no formato XXXXX ou XXX XX" -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Introduza um número de nascimento no formato XXXXXX/XXXX ou XXXXXXXXXX." - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Parâmetro opcional inválido do Género, os valores válidos são 'f' e 'm'" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" +"Introduza um número de nascimento no formato XXXXXX/XXXX ou XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" +"Parâmetro opcional inválido do Género, os valores válidos são 'f' e 'm'" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Introduza um de número de nascimento válido." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Introduza um número de IC válido." @@ -2269,12 +2296,12 @@ msgid "Thuringia" msgstr "" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Introduza um código postal no formato XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2549,11 +2576,11 @@ msgid "Valencian Community" msgstr "" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Instruduza um código postal válido no formato 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2561,65 +2588,497 @@ "Introduza um número de telefone válido num dos formatos 6XXXXXXXX, 8XXXXXXXX " "or 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Por favor introduza um NIF, NIE, ou CIF válido." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Por favor introduza um NIF ou NIE válido." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Checksum inválido para o NIF." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Checksum inválido para o NIE." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Checksum inválido para o CIF." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Por favor introduza um número de conta bancária no formato XXXX-XXXX-XX-" "XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Checksum inválido para o número de conta bancária." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Introduza um número de segurança social Finlandês válido." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Os números de telefone deverão ser no formato 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Introduza um código postal válido." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Introduza um número de telefone válido." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Introduza um número de matrícula de veículo válido" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Introduza um número NIK/KTP válido" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduza um código postal válido no formato XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Introduza um número de identificação Islândica válida. O formato é XXXXXX-" "XXXX" -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Número de identificação Islândica inválido." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Introduza um código postal válido." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Introduza um número de Segurança Social válido." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Introduza um de IVA válido." @@ -2815,6 +3274,10 @@ msgid "Okinawa" msgstr "" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Introduza um número Civil ID Kuwaitiano válido" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "" @@ -2943,15 +3406,11 @@ msgid "Zacatecas" msgstr "" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Introduza um código postal válido." -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Introduza um número de telefone válido." - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Introduza um número SoFi válido." @@ -3003,15 +3462,15 @@ msgid "Zuid-Holland" msgstr "" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Introduza um número de segurança social Norueguês válido." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Este campo requere 8 dígitos." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Este campo requere 11 dígitos." @@ -3035,7 +3494,8 @@ #: contrib/localflavor/pl/forms.py:109 msgid "National Business Register Number (REGON) consists of 9 or 14 digits." -msgstr "O Número de Registo Nacional de Negócio (REGON) consiste em 9 ou 14 dígitos." +msgstr "" +"O Número de Registo Nacional de Negócio (REGON) consiste em 9 ou 14 dígitos." #: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -3109,6 +3569,15 @@ msgid "West Pomerania" msgstr "" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Introduza um código postal no formato XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" +"Os números de telefone devem conter 9 dígitos, ou começarem por + ou 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Introduza um CIF válido." @@ -3129,6 +3598,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Introduza um código postal válido no formato XXXXXX" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Introduza um número de organização Sueco válido." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Introduza um número de identificação pessoal válido." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Números de coordenação não são permitidos." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Introduza um código postal Sueco no formato XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "" @@ -3479,7 +4048,7 @@ #: contrib/localflavor/uk/forms.py:21 msgid "Enter a valid postcode." -msgstr "Introduza um código postal válido." +msgstr "" #: contrib/localflavor/uk/uk_regions.py:11 msgid "Bedfordshire" @@ -3761,22 +4330,47 @@ msgid "Wales" msgstr "" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Introduza o código postal no formato XXXXX or XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Os números de telefone deverão ser no formato XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Introduza o número de Segurança Social dos E.U. no formato XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Introduza um estado ou território do E.U.A.." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado dos E.U.A (duas letras em maiúsculas)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Número de telefone" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Introduza um número CI válido no formato X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Introduza um número CI válido." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" -msgstr "Introduza um número ID da Africa do Sul válido." - -#: contrib/localflavor/za/forms.py:54 +msgstr "Introduza um número ID da África do Sul válido" + +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" -msgstr "Introduza um código postal da Africa do Sul válido." +msgstr "Introduza um código postal da África do Sul válido" #: contrib/localflavor/za/za_provinces.py:4 msgid "Eastern Cape" @@ -3814,6 +4408,10 @@ msgid "Western Cape" msgstr "" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "mensagem lazy" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redireccionar de" @@ -3878,60 +4476,220 @@ msgid "sites" msgstr "sites" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Este campo deverá ser inteiro." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Este valor deverá ser True ou False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Introduza um valor válido." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Introduza um URL válido." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Este URL é link quebrado." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Este valor apenas poderá conter letras, números, undercores ou hífenes." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Introduza um endereço IPv4 válido." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Introduza apenas números separados por vírgulas." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Garanta que este valor seja %(limit_value)s (tem %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Garanta que este valor seja menor ou igual a %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Garanta que este valor seja maior ou igual a %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Garanta que este valor tem no mínimo %(limit_value)d caracteres (tem %" +"(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Garanta que este valor tem no máximo %(limit_value)d caracteres (tem %" +"(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s deverá ser único para %(date_field)s %(lookup)s." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s com este %(field_label)s já existe." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "O valor %r não é uma opção válida." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Este campo não pode ser nulo." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Introduza apenas números separados por vírgulas." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Este campo não pode ser vazio." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Campo do tipo: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Inteiro" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "Este campo deverá ser inteiro." + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "Este valor deverá ser True ou False." + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Boolean (Pode ser True ou False)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "String (até %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Inteiros separados por virgula" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Data (sem hora)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introduza uma data válida no formato AAAA-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Data inválida: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Introduza uma data/hora válida no formato YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Data (com hora)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Este campo deverá ser um número decimal." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Número décimal" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "Endereço de e-mail" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Caminho do ficheiro" + +#: db/models/fields/__init__.py:822 msgid "This value must be a float." msgstr "Este campo deverá ser número décimal." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Número em vírgula flutuante" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Inteiro grande (8 byte)" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Este valor deverá ser None, True ou False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (Pode ser True, False ou None)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Texto" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Hora" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Introduza uma hora válida no formato HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "Texto XML" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "O modelo %(model)s com a chave primária %(pk)r não existe." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Chave Estrangeira (tipo determinado pelo campo relacionado)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "Relação de um-para-um" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Relação de muitos-para-muitos" + +#: db/models/fields/related.py:1000 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenha pressionado o \"Control\", or \"Command\" no Mac, para seleccionar " "mais do que um." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3942,91 +4700,67 @@ "Por favor introduza IDs de %(self)s válidos. Os valores %(value)r são " "inválidos." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Este campo é obrigatório." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Introduza um valor válido." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Garanta que este valor tem no máximo %(max)d caracteres (tem %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Garanta que este valor tem no mínimo %(min)d caracteres (tem %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Introduza um número inteiro." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Garanta que este valor seja menor ou igual a %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Garanta que este valor seja maior ou igual a %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Introduza um número." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." -msgstr "Garanta que não possua no total mais do que %s dígitos." - -#: forms/fields.py:228 +msgstr "Garanta que não contém no total mais do que %s dígitos." + +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." -msgstr "Garanta que não possua mais do que %s casas décimais." - -#: forms/fields.py:229 +msgstr "Garanta que não contém mais do que %s casas décimais." + +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Garanta que não possua mais do que %s digitos antes do ponto decimal." - -#: forms/fields.py:288 forms/fields.py:863 +msgstr "Garanta que não contém mais do que %s digitos antes do ponto decimal." + +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Introduza uma data válida." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Introduza uma hora válida." -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Introduza uma data/hora válida." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Nenhum ficheiro foi submetido. Verifique o tipo de codificação do formulário." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Nenhum ficheiro submetido." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "O ficheiro submetido encontra-se vazio." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." -msgstr "Garanta que este nome do ficheiro tem no máximo %(max)d caracteres (tem %(length)d)." - -#: forms/fields.py:483 +msgstr "" +"Garanta que este nome do ficheiro tem no máximo %(max)d caracteres (tem %" +"(length)d)." + +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4034,112 +4768,89 @@ "Introduza uma imagem válida. O ficheiro que introduziu ou não é uma imagem " "ou está corrompido." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Introduza um URL válido." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Este URL é link quebrado." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Seleccione uma opção válida. %(value)s não se encontra nas opções " "disponíveis." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 msgid "Enter a list of values." msgstr "Introduza uma lista de valores." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Introduza um endereço IPv4 válido." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Este valor apenas poderá conter letras, números, undercores ou hífenes." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Ordem" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s deverá ser único para %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s com este %(field_label)s já existe." - -#: forms/models.py:594 +#: forms/models.py:567 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Por favor corrija os dados duplicados em %(field)s." -#: forms/models.py:598 +#: forms/models.py:571 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "Por favor corrija os dados duplicados em %(field)s, que deverá ser único." - -#: forms/models.py:604 +msgstr "" +"Por favor corrija os dados duplicados em %(field)s, que deverá ser único." + +#: forms/models.py:577 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." -msgstr "Por favor corrija os dados duplicados em %(field_name)s que deverá ser único para o %(lookup)s em %(date_field)s.\"" - -#: forms/models.py:612 +msgstr "" +"Por favor corrija os dados duplicados em %(field_name)s que deverá ser único " +"para o %(lookup)s em %(date_field)s.\"" + +#: forms/models.py:585 msgid "Please correct the duplicate values below." msgstr "Por favor corrija os valores duplicados abaixo." -#: forms/models.py:867 +#: forms/models.py:860 msgid "The inline foreign key did not match the parent instance primary key." -msgstr "A chave estrangeira em linha não coincide com a chave primária na instância pai." - -#: forms/models.py:930 +msgstr "" +"A chave estrangeira em linha não coincide com a chave primária na instância " +"pai." + +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" "Seleccione uma opção válida. Esse valor não se encontra opções disponíveis." -#: forms/models.py:1004 +#: forms/models.py:1008 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "" "Seleccione uma opção válida. %s não se encontra nas opções disponíveis." -#: forms/models.py:1006 +#: forms/models.py:1010 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" não é um valor válido para uma chave primária." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "sim,não,talvez" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "" msgstr[1] "" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "" @@ -4348,7 +5059,7 @@ msgid "Dec." msgstr "Dez." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "ou" @@ -4402,383 +5113,37 @@ msgid ", %(number)d %(type)s" msgstr "" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "N j, Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "P" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" msgstr "F j" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "O(A) %(verbose_name)s foi criado(a) com sucesso." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "O(A) %(verbose_name)s foi actualizado(a) com sucesso." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "O(A) %(verbose_name)s foi removido(a)." - -#~ msgid "headline" -#~ msgstr "título" - -#~ msgid "rating #1" -#~ msgstr "avaliação #1" - -#~ msgid "rating #2" -#~ msgstr "avaliação #2" - -#~ msgid "rating #3" -#~ msgstr "avaliação #3" - -#~ msgid "rating #4" -#~ msgstr "avaliação #4" - -#~ msgid "rating #5" -#~ msgstr "avaliação #5" - -#~ msgid "rating #6" -#~ msgstr "avaliação #6" - -#~ msgid "rating #7" -#~ msgstr "avaliação #7" - -#~ msgid "rating #8" -#~ msgstr "avaliação #8" - -#~ msgid "is valid rating" -#~ msgstr "é uma avaliação válida" - -#~ msgid "Content object" -#~ msgstr "Objecto de conteúdo" - -#~ msgid "person's name" -#~ msgstr "nome da pessoa" - -#~ msgid "ip address" -#~ msgstr "endereço ip" - -#~ msgid "approved by staff" -#~ msgstr "aprovado pela equipa" - -#~ msgid "free comments" -#~ msgstr "comentários livres" - -#~ msgid "score" -#~ msgstr "pontuação" - -#~ msgid "karma score" -#~ msgstr "pontuação do karma" - -#~ msgid "karma scores" -#~ msgstr "pontuações do karma" - -#~ msgid "%(score)d rating by %(user)s" -#~ msgstr "Avaliação %(score)d por %(user)s" - -#~ msgid "" -#~ "This comment was flagged by %(user)s:\n" -#~ "\n" -#~ "%(text)s" -#~ msgstr "" -#~ "O utilizador %(user)s colocou uma flag neste comentário\n" -#~ "\n" -#~ "%(text)s" - -#~ msgid "flag date" -#~ msgstr "data da flag" - -#~ msgid "user flag" -#~ msgstr "flag do utilizador" - -#~ msgid "user flags" -#~ msgstr "flags do utilizador" - -#~ msgid "Flag by %r" -#~ msgstr "Flag por %r" - -#~ msgid "deletion date" -#~ msgstr "data de remoção" - -#~ msgid "moderator deletion" -#~ msgstr "remoção pelo moderador" - -#~ msgid "moderator deletions" -#~ msgstr "remoções pelo moderador" - -#~ msgid "Moderator deletion by %r" -#~ msgstr "Remoção de moderador %r" - -#~ msgid "Anonymous users cannot vote" -#~ msgstr "Utilizadores anónimos não podem votar" - -#~ msgid "No voting for yourself" -#~ msgstr "Não pode votar em si" - -#~ msgid "" -#~ "This rating is required because you've entered at least one other rating." -#~ msgstr "" -#~ "Esta avaliação é obrigatória porque introduziu pelo menos uma outra " -#~ "avaliação." - -#~ msgid "" -#~ "This comment was posted by a user who has posted fewer than %(count)s " -#~ "comment:\n" -#~ "\n" -#~ "%(text)s" -#~ msgid_plural "" -#~ "This comment was posted by a user who has posted fewer than %(count)s " -#~ "comments:\n" -#~ "\n" -#~ "%(text)s" -#~ msgstr[0] "" -#~ "Este comentário foi colocado por um utilizador que efectuou menos de %" -#~ "(count)s comentário:\n" -#~ "\n" -#~ "%(text)s" -#~ msgstr[1] "" -#~ "Este comentário foi colocado por um utilizador que efectuou menos de %" -#~ "(count)s comentários:\n" -#~ "\n" -#~ "%(text)s" - -#~ msgid "Only POSTs are allowed" -#~ msgstr "Apenas POSTs são autorizados" - -#~ msgid "One or more of the required fields wasn't submitted" -#~ msgstr "Um ou mais campos obrigatórios não foram submetidos" - -#~ msgid "Somebody tampered with the comment form (security violation)" -#~ msgstr "Alguém modificou o formulário de comentário (violação de segurança)" - -#~ msgid "" -#~ "The comment form had an invalid 'target' parameter -- the object ID was " -#~ "invalid" -#~ msgstr "" -#~ "O formulário de comentário teve um parâmetro 'target' inválido -- o ID do " -#~ "objecto foi inválido" - -#~ msgid "The comment form didn't provide either 'preview' or 'post'" -#~ msgstr "O formulário de comentário não forneceu nem 'preview' ou 'post'" - -#~ msgid "Forgotten your password?" -#~ msgstr "Esqueceu-se da palavra-passe?" - -#~ msgid "Required" -#~ msgstr "Obrigatório" - -#~ msgid "Post a photo" -#~ msgstr "Colocar uma foto" - -#~ msgid "Your name:" -#~ msgstr "O seu nome:" - -#~ msgid "Added %s." -#~ msgstr "Foi adicionado %s" - -#~ msgid "Deleted %s." -#~ msgstr "Foi removido %s." - -#~ msgid "DATE_WITH_TIME_FULL" -#~ msgstr "N j, Y, P" - -#~ msgid "Have you forgotten your password?" -#~ msgstr "Esqueceu-se a sua palavra-passe?" - -#~ msgid "Ordering" -#~ msgstr "Ordenação" - -#~ msgid "Your new password is: %(new_password)s" -#~ msgstr "A sua nova palavra-chave é: %(new_password)s" - -#~ msgid "Feel free to change this password by going to this page:" -#~ msgstr "" -#~ "Tenha a liberdade de modificar esta palavra-passe através desta página:" - -#~ msgid "Use '[algo]$[salt]$[hexdigest]'" -#~ msgstr "Use '[algo]$[salt]$[hexdigest]'" - -#~ msgid "Uppercase letters are not allowed here." -#~ msgstr "Letras em maiúsculas não são permitidas aqui." - -#~ msgid "Lowercase letters are not allowed here." -#~ msgstr "Letras em minúsculas não são permitidas aqui." - -#~ msgid "Enter valid e-mail addresses separated by commas." -#~ msgstr "Introduza endereços de e-mail válidos separados por vírgulas." - -#~ msgid "Empty values are not allowed here." -#~ msgstr "Valores em branco não são permitidos aqui." - -#~ msgid "Non-numeric characters aren't allowed here." -#~ msgstr "Caracteres não númericos não são permitidos aqui." - -#~ msgid "This value can't be comprised solely of digits." -#~ msgstr "Este valor não pode ser constituido apenas por números." - -#~ msgid "Only alphabetical characters are allowed here." -#~ msgstr "Apenas letras são válidas aqui." - -#~ msgid "Year must be 1900 or later." -#~ msgstr "O ano deve ser 1900 ou superior." - -#~ msgid "The URL %s does not point to a valid image." -#~ msgstr "O URL %s não aponta para uma imagem válida." - -#~ msgid "The URL %s does not point to a valid QuickTime video." -#~ msgstr "O URL %s não aponta para um QuickTime video válido." - -#~ msgid "A valid URL is required." -#~ msgstr "É obrigatório um URL válido" - -#~ msgid "" -#~ "Valid HTML is required. Specific errors are:\n" -#~ "%s" -#~ msgstr "" -#~ "É obrigatório um HTML válido. Os erros específicos são:\n" -#~ "%s" - -#~ msgid "Badly formed XML: %s" -#~ msgstr "XML mal formatado: %s" - -#~ msgid "Enter a valid U.S. state abbreviation." -#~ msgstr "Introduza uma abreviação de um estado dos E.U.A. válido." - -#~ msgid "This field must match the '%s' field." -#~ msgstr "Este campo deve ser igual ao campo '%s'." - -#~ msgid "Please enter something for at least one field." -#~ msgstr "Por favor preencha pelo menos um campo." - -#~ msgid "Please enter both fields or leave them both empty." -#~ msgstr "Por favor preencha ambos os campos ou deixe ambos vazios." - -#~ msgid "This field must be given if %(field)s is not %(value)s" -#~ msgstr "Este campo deve ser preenchido se %(field)s não é %(value)s" - -#~ msgid "Duplicate values are not allowed." -#~ msgstr "Valores duplicados não são permitidos." - -#~ 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] "" -#~ "Por favor introduza um número décimal com um máximo de %s digito." -#~ msgstr[1] "" -#~ "Por favor introduza um número décimal com um máximo de %s digitos." - -#, fuzzy -#~ msgid "" -#~ "Please enter a valid decimal number with a whole part of at most %s digit." -#~ msgid_plural "" -#~ "Please enter a valid decimal number with a whole part of at most %s " -#~ "digits." -#~ msgstr[0] "" -#~ "Por favor introduza um número décimal com o máximo de % digito na parte " -#~ "inteira." -#~ msgstr[1] "" -#~ "Por favor introduza um número décimal com o máximo de % digitos na parte " -#~ "inteira." - -#~ 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] "" -#~ "Por favor introduza um número décimal com o máximo de %s digito na parte " -#~ "décimal." -#~ msgstr[1] "" -#~ "Por favor introduza um número décimal com o máximo de %s digitos na parte " -#~ "décimal." - -#~ msgid "Make sure your uploaded file is at least %s bytes big." -#~ msgstr "Verifique que o ficheiro introduzido tem pelo menos %s bytes." - -#~ msgid "Make sure your uploaded file is at most %s bytes big." -#~ msgstr "Verifique se o ficheiro introduzido tem no máximo %s bytes." - -#~ msgid "The format for this field is wrong." -#~ msgstr "O formato deste campo é errado." - -#~ msgid "Could not retrieve anything from %s." -#~ msgstr "Não foi possível extrair nada de %s." - -#, fuzzy -#~ msgid "" -#~ "The URL %(url)s returned the invalid Content-Type header '%(contenttype)" -#~ "s'." -#~ msgstr "" -#~ "O URL %(url)s devolveu um tipo de conteúdo inválido no header: '%s" -#~ "(contenttype)s'." - -#~ msgid "" -#~ "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts " -#~ "with \"%(start)s\".)" -#~ msgstr "" -#~ "Por favor feche a tag %(tag)s na linha %(line)s. (A linha começa por \"%" -#~ "(start)s\".)" - -#~ msgid "" -#~ "Some text starting on line %(line)s is not allowed in that context. (Line " -#~ "starts with \"%(start)s\".)" -#~ msgstr "" -#~ "Algum texto começado na linha %(line)s não é permitido nesse contexto. (A " -#~ "linha começa por \"%(start)s\".)" - -#~ msgid "" -#~ "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with " -#~ "\"%(start)s\".)" -#~ msgstr "" -#~ "\"%(attr)s\" na linha %(line)s é um atributo inválido. (A linha começa " -#~ "por \"%(start)s\".)" - -#~ msgid "" -#~ "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -#~ "(start)s\".)" -#~ msgstr "" -#~ "\"<%(tag)s>\" na linha %(line)s é um tag inválida. (A linha começa por \"%" -#~ "(start)s\".)" - -#~ msgid "" -#~ "A tag on line %(line)s is missing one or more required attributes. (Line " -#~ "starts with \"%(start)s\".)" -#~ msgstr "" -#~ "Uma tag na linha %(line)s não tem um o mais atributos obrigatórios. (A " -#~ "linha começa por \"%(start)s\".)" - -#~ msgid "" -#~ "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -#~ "starts with \"%(start)s\".)" -#~ msgstr "" -#~ "O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (A linha " -#~ "começa por \"%(start)s\".)" - -#~ msgid "Separate multiple IDs with commas." -#~ msgstr "Separe múltiplos IDs através de vírgulas." - -#~ msgid "Ensure your text is less than %s character." -#~ msgid_plural "Ensure your text is less than %s characters." -#~ msgstr[0] "Verifique se o seu texto tem menos de %s caracter." -#~ msgstr[1] "Verifique se o seu texto tem menos de %s caracteres." - -#~ msgid "Line breaks are not allowed here." -#~ msgstr "Quebras de linha não são permitas aqui." - -#~ msgid "Enter a whole number between -32,768 and 32,767." -#~ msgstr "Introduza um número entre -32,768 e 32,767." - -#~ msgid "Enter a whole number between 0 and 32,767." -#~ msgstr "Introduza um número entre 0 e 32,767." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/pt/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/pt/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/pt/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-29 09:18+0100\n" +"POT-Creation-Date: 2010-05-01 20:24+0200\n" "PO-Revision-Date: 2008-08-29 09:24+0100\n" "Last-Translator: Nuno Mariz \n" "Language-Team: pt_PT \n" @@ -13,36 +13,43 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" msgstr "Disponível %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Escolher todos" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Adicionar" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Remover" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "Escolhido %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " msgstr "Seleccione a(s) sua(s) escolha(s) e clique " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Limpar tudo" +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "" +msgstr[1] "" + #: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/dateparse.js:32 msgid "" @@ -56,62 +63,63 @@ msgid "S M T W T F S" msgstr "D S T Q Q S S" +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Mostrar" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Ocultar" + #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Domingo Segunda Terça Quarta Quinta Sexta Sábado" -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 -msgid "Show" -msgstr "Mostrar" - -#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 -msgid "Hide" -msgstr "Ocultar" - -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Agora" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Relógio" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Escolha a hora" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Meia-noite" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "6 a.m." -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Meio-dia" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "Cancelar" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Hoje" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Calendário" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Ontem" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Amanhã" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/pt/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,35 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'j \de F \de Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = r'j \de F \de Y à\s H:i' +YEAR_MONTH_FORMAT = r'F \de Y' +MONTH_DAY_FORMAT = r'j \de F' +SHORT_DATE_FORMAT = 'd/m/Y' +SHORT_DATETIME_FORMAT = 'd/m/Y H:i' +FIRST_DAY_OF_WEEK = 0 # Sunday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06' + # '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006' + # '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' + '%d/%m/%y %H:%M', # '25/10/06 14:30' + '%d/%m/%y', # '25/10/06' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt_BR/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/pt_BR/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt_BR/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/pt_BR/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/pt_BR/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: Grupo de Localização para o Português \n" -"POT-Creation-Date: 2009-07-23 10:00-0300\n" -"PO-Revision-Date: 2009-07-23 10:03-0300\n" +"POT-Creation-Date: 2010-03-19 17:38-0300\n" +"PO-Revision-Date: 2010-03-19 17:58-0300\n" "Last-Translator: Guilherme Gondim \n" "Language-Team: Grupo de Localização para o Português \n" "MIME-Version: 1.0\n" @@ -19,218 +19,238 @@ msgstr "Árabe" #: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Búlgaro" + +#: conf/global_settings.py:46 msgid "Bengali" msgstr "Bengali" -#: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Búlgaro" - #: conf/global_settings.py:47 -msgid "Catalan" -msgstr "Catalão" +msgid "Bosnian" +msgstr "Bósnia" #: conf/global_settings.py:48 +msgid "Catalan" +msgstr "Catalão" + +#: conf/global_settings.py:49 msgid "Czech" msgstr "Tcheco" -#: conf/global_settings.py:49 -msgid "Welsh" -msgstr "Galês" - #: conf/global_settings.py:50 -msgid "Danish" -msgstr "Dinamarquês" +msgid "Welsh" +msgstr "Galês" #: conf/global_settings.py:51 +msgid "Danish" +msgstr "Dinamarquês" + +#: conf/global_settings.py:52 msgid "German" msgstr "Alemão" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Grego" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "Inglês" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Spanish" msgstr "Espanhol" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estoniano" - #: conf/global_settings.py:56 msgid "Argentinean Spanish" msgstr "Espanhol Argentino" #: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Estoniano" + +#: conf/global_settings.py:58 msgid "Basque" msgstr "Basco" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Persian" msgstr "Persa" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Finnish" msgstr "Finlandês" -#: conf/global_settings.py:60 -msgid "French" -msgstr "Francês" - #: conf/global_settings.py:61 -msgid "Irish" -msgstr "Irlandês" +msgid "French" +msgstr "Francês" #: conf/global_settings.py:62 -msgid "Galician" -msgstr "Galiciano" +msgid "Frisian" +msgstr "Frísia" #: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Húngaro" +msgid "Irish" +msgstr "Irlandês" #: conf/global_settings.py:64 +msgid "Galician" +msgstr "Galiciano" + +#: conf/global_settings.py:65 msgid "Hebrew" msgstr "Hebraico" -#: conf/global_settings.py:65 -msgid "Hindi" -msgstr "Hindi" - #: conf/global_settings.py:66 +msgid "Hindi" +msgstr "Hindi" + +#: conf/global_settings.py:67 msgid "Croatian" msgstr "Croata" -#: conf/global_settings.py:67 -msgid "Icelandic" -msgstr "Islandês" - #: conf/global_settings.py:68 -msgid "Italian" -msgstr "Italiano" +msgid "Hungarian" +msgstr "Húngaro" #: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Islandês" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Italiano" + +#: conf/global_settings.py:71 msgid "Japanese" msgstr "Japonês" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Georgian" msgstr "Georgiano" -#: conf/global_settings.py:71 -msgid "Korean" -msgstr "Coreano" - -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Kannada" msgstr "Canarês" -#: conf/global_settings.py:74 -msgid "Latvian" -msgstr "Letão" - #: conf/global_settings.py:75 -msgid "Lithuanian" -msgstr "Lituano" +msgid "Korean" +msgstr "Coreano" #: conf/global_settings.py:76 -msgid "Macedonian" -msgstr "Macedônio" +msgid "Lithuanian" +msgstr "Lituano" #: conf/global_settings.py:77 -msgid "Dutch" -msgstr "Neerlandês" +msgid "Latvian" +msgstr "Letão" #: conf/global_settings.py:78 -msgid "Norwegian" -msgstr "Norueguês" +msgid "Macedonian" +msgstr "Macedônio" #: conf/global_settings.py:79 +msgid "Dutch" +msgstr "Neerlandês" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "Norueguês" + +#: conf/global_settings.py:81 msgid "Polish" msgstr "Polonês" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Portuguese" msgstr "Português" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Brazilian Portuguese" msgstr "Português Brasileiro" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Romanian" msgstr "Romeno" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Russian" msgstr "Russo" -#: conf/global_settings.py:84 +#: conf/global_settings.py:86 msgid "Slovak" msgstr "Eslovaco" -#: conf/global_settings.py:85 +#: conf/global_settings.py:87 msgid "Slovenian" msgstr "Esloveno" -#: conf/global_settings.py:86 +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "Albanesa" + +#: conf/global_settings.py:89 msgid "Serbian" msgstr "Sérvio" -#: conf/global_settings.py:87 +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "Sérvio Latino" + +#: conf/global_settings.py:91 msgid "Swedish" msgstr "Sueco" -#: conf/global_settings.py:88 +#: conf/global_settings.py:92 msgid "Tamil" msgstr "Tâmil" -#: conf/global_settings.py:89 +#: conf/global_settings.py:93 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:90 +#: conf/global_settings.py:94 msgid "Thai" msgstr "Tailandês" -#: conf/global_settings.py:91 +#: conf/global_settings.py:95 msgid "Turkish" msgstr "Turco" -#: conf/global_settings.py:92 +#: conf/global_settings.py:96 msgid "Ukrainian" msgstr "Ucraniano" -#: conf/global_settings.py:93 +#: conf/global_settings.py:97 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: conf/global_settings.py:98 msgid "Simplified Chinese" msgstr "Chinês Simplificado" -#: conf/global_settings.py:94 +#: conf/global_settings.py:99 msgid "Traditional Chinese" msgstr "Chinês Tradicional" -#: contrib/admin/actions.py:60 +#: contrib/admin/actions.py:52 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "Removido %(count)d %(items)s com sucesso." -#: contrib/admin/actions.py:67 contrib/admin/options.py:1027 +#: contrib/admin/actions.py:59 contrib/admin/options.py:1101 msgid "Are you sure?" msgstr "Tem certeza?" -#: contrib/admin/actions.py:85 +#: contrib/admin/actions.py:77 #, python-format msgid "Delete selected %(verbose_name_plural)s" -msgstr "Remover %(verbose_name_plural)s selecionado" +msgstr "Remover %(verbose_name_plural)s selecionados" #: contrib/admin/filterspecs.py:44 #, python-format @@ -266,19 +286,19 @@ msgid "This year" msgstr "Este ano" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "Yes" msgstr "Sim" -#: contrib/admin/filterspecs.py:147 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:470 msgid "No" msgstr "Não" -#: contrib/admin/filterspecs.py:154 forms/widgets.py:434 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:470 msgid "Unknown" msgstr "Desconhecido" -#: contrib/admin/helpers.py:14 +#: contrib/admin/helpers.py:19 msgid "Action:" msgstr "Ação:" @@ -310,61 +330,60 @@ msgid "log entries" msgstr "entradas de log" -#: contrib/admin/options.py:133 contrib/admin/options.py:147 +#: contrib/admin/options.py:139 contrib/admin/options.py:154 msgid "None" msgstr "Nenhum" -#: contrib/admin/options.py:519 +#: contrib/admin/options.py:558 #, python-format msgid "Changed %s." msgstr "Modificado %s." -#: contrib/admin/options.py:519 contrib/admin/options.py:529 -#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388 -#: forms/models.py:600 forms/models_flymake.py:388 forms/models_flymake.py:600 +#: contrib/admin/options.py:558 contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:840 +#: forms/models.py:556 msgid "and" msgstr "e" -#: contrib/admin/options.py:524 +#: contrib/admin/options.py:563 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Adicionado %(name)s \"%(object)s\"" -#: contrib/admin/options.py:528 +#: contrib/admin/options.py:567 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Modificado %(list)s para %(name)s \"%(object)s\"." -#: contrib/admin/options.py:533 +#: contrib/admin/options.py:572 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Deletado %(name)s \"%(object)s\"." -#: contrib/admin/options.py:537 +#: contrib/admin/options.py:576 msgid "No fields changed." msgstr "Nenhum campo modificado." -#: contrib/admin/options.py:599 contrib/auth/admin.py:67 +#: contrib/admin/options.py:642 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\": adicionado com sucesso." -#: contrib/admin/options.py:603 contrib/admin/options.py:636 -#: contrib/auth/admin.py:75 +#: contrib/admin/options.py:646 contrib/admin/options.py:679 msgid "You may edit it again below." msgstr "Você pode editar novamente abaixo." -#: contrib/admin/options.py:613 contrib/admin/options.py:646 +#: contrib/admin/options.py:656 contrib/admin/options.py:689 #, python-format msgid "You may add another %s below." msgstr "Você pode adicionar outro %s abaixo." -#: contrib/admin/options.py:634 +#: contrib/admin/options.py:677 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\": modificado com sucesso." -#: contrib/admin/options.py:642 +#: contrib/admin/options.py:685 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -372,44 +391,70 @@ "%(name)s \"%(obj)s\": adicionado com sucesso. Você pode editar novamente " "abaixo." -#: contrib/admin/options.py:773 +#: contrib/admin/options.py:743 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Os itens devem ser selecionados a fim de executar ações sobre eles. Nenhum " +"item foi modificado." + +#: contrib/admin/options.py:761 +msgid "No action selected." +msgstr "Nenhuma ação selecionada." + +#: contrib/admin/options.py:841 #, python-format msgid "Add %s" msgstr "Adicionar %s" -#: contrib/admin/options.py:804 contrib/admin/options.py:1005 +#: contrib/admin/options.py:867 contrib/admin/options.py:1081 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Objeto %(name)s com chave primária %(key)r não existe." -#: contrib/admin/options.py:861 +#: contrib/admin/options.py:932 #, python-format msgid "Change %s" msgstr "Modificar %s" -#: contrib/admin/options.py:905 +#: contrib/admin/options.py:977 msgid "Database error" msgstr "Erro no banco de dados" -#: contrib/admin/options.py:941 +#: contrib/admin/options.py:1013 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s modificado com sucesso." msgstr[1] "%(count)s %(name)s modificados com sucesso." -#: contrib/admin/options.py:1020 +#: contrib/admin/options.py:1040 +#, python-format +msgid "of %(count)d selected" +msgid_plural "of %(count)d selected" +msgstr[0] "de %(count)d selecionado" +msgstr[1] "de %(count)d selecionados" + +#: contrib/admin/options.py:1042 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s selecionado" +msgstr[1] "Todos %(total_count)s selecionados" + +#: contrib/admin/options.py:1094 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\": excluído com sucesso." -#: contrib/admin/options.py:1057 +#: contrib/admin/options.py:1131 #, python-format msgid "Change history: %s" msgstr "Histórico de modificações: %s" -#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -417,11 +462,11 @@ "Por favor, entre com um usuário e senha corretos. Note que ambos os campos " "diferenciam maiúsculas e minúsculas." -#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Por favor acesse novamente, pois sua sessão expirou." -#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -429,64 +474,54 @@ "Parece que seu navegador não está configurado para aceitar cookies. Por " "favor habilite os cookies, recarregue esta página, e tente novamente." -#: contrib/admin/sites.py:308 contrib/admin/sites.py:314 +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Nomes de usuário não podem conter o caractere '@'." -#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Seu endereço de e-mail não é seu nome de usuário. Tente usar '%s'" -#: contrib/admin/sites.py:367 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Administração do Site" -#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Acessar" -#: contrib/admin/sites.py:426 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "Administração de %s" -#: contrib/admin/util.py:168 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "1 ou mais %(fieldname)s em %(name)s: %(obj)s" - -#: contrib/admin/util.py:173 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "1 ou mais %(fieldname)s em %(name)s:" - -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Data:" -#: contrib/admin/widgets.py:71 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Hora:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Atualmente:" -#: contrib/admin/widgets.py:95 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Modificar:" -#: contrib/admin/widgets.py:124 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Olhar" -#: contrib/admin/widgets.py:235 +#: contrib/admin/widgets.py:244 msgid "Add Another" -msgstr "Adicionar outro" +msgstr "Adicionar Outro(a)" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -500,16 +535,16 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 #: contrib/admin/templates/admin/base.html:54 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:25 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -546,6 +581,19 @@ msgid "Go" msgstr "Ir" +#: contrib/admin/templates/admin/actions.html:10 +msgid "Click here to select the objects across all pages" +msgstr "Clique aqui para selecionar os objetos de todas as páginas" + +#: contrib/admin/templates/admin/actions.html:10 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Selecionar todos %(total_count)s %(module_name)s" + +#: contrib/admin/templates/admin/actions.html:12 +msgid "Clear selection" +msgstr "Limpar seleção" + #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 #, python-format @@ -558,22 +606,22 @@ #: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentação" #: contrib/admin/templates/admin/base.html:40 -#: contrib/admin/templates/admin/auth/user/change_password.html:14 -#: contrib/admin/templates/admin/auth/user/change_password.html:47 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "Alterar senha" #: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Encerrar sessão" @@ -585,41 +633,42 @@ msgid "Django administration" msgstr "Administração do Django" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" msgstr "Adicionar" -#: contrib/admin/templates/admin/change_form.html:27 +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Histórico" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Ver no site" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:54 -#: contrib/admin/templates/admin/auth/user/change_password.html:23 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Por favor, corrija o erro abaixo." msgstr[1] "Por favor, corrija os erros abaixo." -#: contrib/admin/templates/admin/change_list.html:46 +#: contrib/admin/templates/admin/change_list.html:60 #, python-format msgid "Add %(name)s" msgstr "Adicionar %(name)s" -#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/change_list.html:79 msgid "Filter" msgstr "Filtro" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:297 msgid "Delete" msgstr "Apagar" @@ -667,7 +716,7 @@ #, python-format msgid "" "Are you sure you want to delete the selected %(object_name)s objects? All of " -"the following objects and it's related items will be deleted:" +"the following objects and their related items will be deleted:" msgstr "" "Você tem certeza que quer remover os objetos %(object_name)s selecionados? " "Todos os seguintes objetos e seus itens relacionados serão removidos:" @@ -733,15 +782,9 @@ msgstr "Usuário" #: contrib/admin/templates/admin/object_history.html:24 -#: contrib/comments/templates/comments/moderation_queue.html:33 msgid "Action" msgstr "Ação" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:400 -msgid "DATETIME_FORMAT" -msgstr "j \\de N \\de Y à\\s H:i" - #: contrib/admin/templates/admin/object_history.html:38 msgid "" "This object doesn't have a change history. It probably wasn't added via this " @@ -787,7 +830,7 @@ msgid "Save and continue editing" msgstr "Salvar e continuar editando" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." @@ -795,33 +838,39 @@ "Primeiro, informe um nome de usuário e senha. Depois você será capaz de " "editar mais opções do usuário." -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 -msgid "Username" -msgstr "Usuário" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 -msgid "Password" -msgstr "Senha" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -#: contrib/auth/forms.py:186 -msgid "Password (again)" -msgstr "Senha (novamente)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:41 -msgid "Enter the same password as above, for verification." -msgstr "Informe a mesma senha digitada acima, para verificação." - -#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Informe uma nova senha para o usuário %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Senha" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Senha (novamente)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Informe a mesma senha digitada acima, para verificação." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Adicionar outro %(verbose_name)s" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Remover" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Apagar?" @@ -835,9 +884,9 @@ msgstr "Acessar novamente" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Alterar senha" @@ -850,7 +899,7 @@ msgid "Your password was changed." msgstr "Sua senha foi alterada." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -858,21 +907,17 @@ "Por favor, informe sua senha antiga, por segurança, e então informe sua nova " "senha duas vezes para que possamos verificar se você digitou corretamente." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Senha antiga:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nova senha:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Confirme a senha:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Senha antiga" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nova senha" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Alterar minha senha" @@ -911,6 +956,14 @@ "Por favor, informe sua nova senha duas vezes para que possamos verificar se " "você a digitou corretamente." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nova senha:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Confirme a senha:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Recuperação de senha sem sucesso" @@ -978,7 +1031,7 @@ msgid "Reset my password" msgstr "Reinicializar minha senha" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:240 msgid "All dates" msgstr "Todas as datas" @@ -992,11 +1045,11 @@ msgid "Select %s to change" msgstr "Selecione %s para modificar" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "site" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "template" @@ -1056,89 +1109,7 @@ msgid "Fields on %s objects" msgstr "Campos nos objetos %s" -#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345 -#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353 -#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356 -msgid "Integer" -msgstr "Inteiro" - -#: contrib/admindocs/views.py:335 -msgid "Boolean (Either True or False)" -msgstr "Booleano (Verdadeiro ou Falso)" - -#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "String (até %(max_length)s)" - -#: contrib/admindocs/views.py:337 -msgid "Comma-separated integers" -msgstr "Inteiros separados por vírgula" - -#: contrib/admindocs/views.py:338 -msgid "Date (without time)" -msgstr "Data (sem hora)" - -#: contrib/admindocs/views.py:339 -msgid "Date (with time)" -msgstr "Data e hora" - -#: contrib/admindocs/views.py:340 -msgid "Decimal number" -msgstr "Número decimal" - -#: contrib/admindocs/views.py:341 -msgid "E-mail address" -msgstr "Endereço de e-mail" - -#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343 -#: contrib/admindocs/views.py:346 -msgid "File path" -msgstr "Caminho de arquivo" - -#: contrib/admindocs/views.py:344 -msgid "Floating point number" -msgstr "Número de ponto flutuante" - -#: contrib/admindocs/views.py:348 contrib/comments/models.py:60 -msgid "IP address" -msgstr "Endereço IP" - -#: contrib/admindocs/views.py:350 -msgid "Boolean (Either True, False or None)" -msgstr "Booleano (Verdadeiro, Falso ou Nada)" - -#: contrib/admindocs/views.py:351 -msgid "Relation to parent model" -msgstr "Relação com o modelo pai" - -#: contrib/admindocs/views.py:352 -msgid "Phone number" -msgstr "Número de telefone" - -#: contrib/admindocs/views.py:357 -msgid "Text" -msgstr "Texto" - -#: contrib/admindocs/views.py:358 -msgid "Time" -msgstr "Hora" - -#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:360 -msgid "U.S. state (two uppercase letters)" -msgstr "Estado dos EUA (duas letras maiúsculas)" - #: contrib/admindocs/views.py:361 -msgid "XML text" -msgstr "Texto XML" - -#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s não aparenta ser um objeto urlpattern" @@ -1208,66 +1179,61 @@ msgid "As above, but opens the admin page in a new window." msgstr "Como acima, mas abre a página de administração em uma nova janela." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Informações pessoais" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Permissões" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Datas importantes" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupos" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Adicionar usuário" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Senha modificada com sucesso." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Alterar senha: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanuméricos(letras, " -"dígitos e sublinhados (_) )" - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Este valor deve conter apenas letras, números e sublinhados (_)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Usuário" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "Obrigatório. 30 caracteres ou menos. Somente letras, dígitos e @/./+/-/_." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Este valor deve conter apenas letras, números e os caracteres @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Confirmação de senha" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Um usuário com este nome de usuário já existe." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Os dois campos de senha não combinam." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Esta conta está inativa." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1275,105 +1241,102 @@ "Seu navegador Web não parece estar com os cookies habilitados. Cookies são " "requeridos para acessar." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-mail" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" msgstr "" -"Este endereço de e-mail não está associado com uma conta de usuário.Você tem " -"certeza que está registrado?" - -#: contrib/auth/forms.py:135 +"Este endereço de e-mail não está associado com uma conta de usuário. Você " +"tem certeza que está registrado?" + +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Recuperar senha em %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nova senha" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Confirmação da nova senha" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Senha antiga" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "A senha antiga foi digitada incorretamente. Por favor, informe a senha " "novamente." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "nome" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "apelido" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "permissão" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "permissões" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "grupo" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupos" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "usuário" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Obrigatório. 30 caracteres ou menos. Letras, números e os caracteres @/./+/-/_" + +#: contrib/auth/models.py:197 msgid "first name" msgstr "primeiro nome" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "último nome" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "endereço de e-mail" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "senha" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." msgstr "" "Use '[algo]$[salt]$[hexdigest]' ou Altere a senha." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "membro da equipe" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "Indica que usuário consegue acessar este site de administração." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "ativo" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1381,11 +1344,11 @@ "Indica que o usuário será tratado como ativo. Ao invés de excluir contas de " "usuário, desmarque isso." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "status de superusuário" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1393,15 +1356,15 @@ "Indica que este usuário tem todas as permissões sem atribuí-las " "explicitamente." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "último login" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "data de registro" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1409,39 +1372,77 @@ "Em adição às permissões atribuídas manualmente, este usuário também terá " "todas as permissões dadas a cada grupo que participar." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "permissões do usuário" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "usuário" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "usuários" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "mensagem" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Sessão encerrada" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:416 msgid "Enter a valid e-mail address." msgstr "Informe um endereço de email válido." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Conteúdo" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Meta-dados" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "marcado" +msgstr[1] "marcados" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Marcar comentários selecionados" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "aprovado" +msgstr[1] "aprovados" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Aprovar comentários selecionados" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "removido" +msgstr[1] "removidos" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Remover comentários selecionados" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "1 comentários foi %(action)s com sucesso." +msgstr[1] "%(count)s comentários foram %(action)s com sucesso." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1453,7 +1454,6 @@ msgstr "Últimos comentários em %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Nome" @@ -1461,26 +1461,30 @@ msgid "Email address" msgstr "Endereço de e-mail" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1121 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Comentário" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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] "Olha sua boca! A palavra %s não é permitida aqui." msgstr[1] "Olha sua boca! As palavras %s não são permitidas aqui." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "" "Se você inserir qualquer coisa neste campo, seu comentário será tratado como " "spam" -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "tipo de conteúdo" @@ -1509,6 +1513,10 @@ msgid "date/time submitted" msgstr "data/hora de envio" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:916 +msgid "IP address" +msgstr "Endereço IP" + #: contrib/comments/models.py:61 msgid "is public" msgstr "é público" @@ -1592,7 +1600,6 @@ msgstr "Realmente tornar este comentário público?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Aprovar" @@ -1617,11 +1624,6 @@ msgid "Really remove this comment?" msgstr "Realmente remover este comentário?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Remover" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Obrigado pela remoção" @@ -1652,39 +1654,6 @@ msgid "Preview" msgstr "Visualizar" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Fila de moderação de comentário" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Nenhum comentário para moderar" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Email" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Autenticado?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "Endereço IP" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Data de publicação" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "sim" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "não" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Obrigado por comentar" @@ -1712,11 +1681,11 @@ msgid "or make changes" msgstr "ou faça modificações" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "nome da classe model em python" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "tipos de conteúdo" @@ -1778,7 +1747,7 @@ msgid "flat pages" msgstr "páginas planas" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1786,6 +1755,38 @@ "Desculpe, mas seu formulário expirou. Por favor, continue preenchendo o " "formulário desta página." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "Ponto" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "Linha string" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "Polígono" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "Multiponto" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "Multilinha string" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "Multipolígono" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "Coleção geométrica" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Nenhum valor geométrico fornecido." @@ -1891,25 +1892,25 @@ msgid "yesterday" msgstr "ontem" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Informe um código postal no formato NNNN ou ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Este campo requer somente números." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Este campo requer 7 ou 8 dígitos." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Informe um CUIT válido no formato XX-XXXXXXXX-X ou XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "CUIT inválido." @@ -1949,8 +1950,8 @@ msgid "Vienna" msgstr "Viena" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Informe um código postal no formato XXXX." @@ -1959,19 +1960,19 @@ msgstr "" "Informe um número de Seguro Social Austríaco válido no formato XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Informe um código postal de 4 dígitos." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Informe um código postal no formato XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Números de telefone devem estar no formato XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." @@ -1979,27 +1980,27 @@ "Selecione um estado brasileiro válido. O estado escolhido não é um dos " "estados disponíveis." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Número de CPF inválido." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Este campo requer no máximo 11 dígitos ou 14 caracteres." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Número de CNPJ inválido." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Este campo requer ao menos 14 dígitos" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "Informe um código postal no formato XXX XXX." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" "Informe um número de Canadian Social Insurance válido no formato XXX-XXX-XXX." @@ -2108,7 +2109,7 @@ msgid "Zurich" msgstr "Zurique" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." @@ -2116,15 +2117,15 @@ "Informe uma indentidade Suíça ou número de passaporte válido no formato " "X1234567<0 ou 1234567890." -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Informe um RUT chileno válido." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Informe um RUT chileno válido. O formato é XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "O RUT chileno não é válido." @@ -2184,23 +2185,23 @@ msgid "Moravian-Silesian Region" msgstr "Região de Morávia-Silésia" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Informe um código postal no formato XXXXX ou XXX XX." -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "Informe um número de nascimento no formato XXXXXX/XXXX ou XXXXXXXXXX." - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" -msgstr "Parâmetro opcional Gênero inválido, os valores válidos são 'f' e 'm'" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "Informe um número de nascimento no formato XXXXXX/XXXX ou XXXXXXXXXX." #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "Parâmetro opcional Gênero inválido, os valores válidos são 'f' e 'm'" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "Informe um número de nascimento válido." -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "Informe um número IC válido." @@ -2268,12 +2269,12 @@ msgid "Thuringia" msgstr "Turíngia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Informe um código postal no formato XXXXX." -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2548,11 +2549,11 @@ msgid "Valencian Community" msgstr "Comunidade Valenciana" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Informe um código postal válido no intervalo e formato 01XXX - 52XXX." -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." @@ -2560,63 +2561,495 @@ "Informe um número de telefone válido em um destes formatos 6XXXXXXXX, " "8XXXXXXXX ou 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "Por favor, informe um NIF, NIE OU CIF válido." -#: contrib/localflavor/es/forms.py:67 +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Por favor, informe um NIF ou FIE válido." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "O NIF é incorreto." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "O NIE é incorreto." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "O CIF é incorreto." -#: contrib/localflavor/es/forms.py:142 +#: contrib/localflavor/es/forms.py:143 msgid "" "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." msgstr "" "Por favor, informe um número de conta bancária válida no formato XXXX-XXXX-" "XX-XXXXXXXXXX." -#: contrib/localflavor/es/forms.py:143 +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Número de verificação de conta bancária incorreto." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Informe um número de seguro social finlandês válido." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Números de telefone devem estar no formato 0X XX XX XX XX." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Informe um código postal válido." + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Informe um número de telefone válido." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Informe uma placa de licença de veículo válida." + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Informe um número NIK/KTP válido." + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jacarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Java Ocidental" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Java Central" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Java Oriental" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Ocicental" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan do Sul" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Central" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Oriental" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Ilhas Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Ilhas Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Molucas" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Molucas do Norte" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Achém" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Sonda Ocidental" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Sonda Oriental" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Ocidental" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Celebes Ocidental" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Celebes do Sul" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Celebes Central" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Celebes do Sudeste" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Celebes do Norte" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatra Ocidental" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatra do Sul" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatra do Norte" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Ilhas Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua e Papua Ocidental" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surubaia" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Governo Federal" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Condado" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Condado" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Condado" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "Informe um código postal no formato XXXXXXX." -#: contrib/localflavor/is_/forms.py:17 +#: contrib/localflavor/is_/forms.py:18 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "Informe um número de identificação islandês válido." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "O número de identificação islandês não é válido." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Informe um código postal válido." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Informe um número de Segurança Social válido." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Informe um número IVA válido." @@ -2812,6 +3245,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Informe um ID Civil Kuwaitiano válido." + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2940,15 +3377,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Informe um código postal válido." -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Informe um número de telefone válido." - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Informe um número SoFi válido." @@ -3000,15 +3433,15 @@ msgid "Zuid-Holland" msgstr "Holanda do Sul" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Informe um número de segurança social norueguês válido." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Este campo requer 8 dígitos." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Este campo requer 11 dígitos." @@ -3108,6 +3541,15 @@ msgid "West Pomerania" msgstr "Pomerânia Ocidental" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "Informe um código postal no formato XXXX-XXX." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" +"Números de telefone precisam conter 9 dígios, ou começarem com + ou 00." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Informe um CIF válido." @@ -3128,6 +3570,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "Informe um código postal no formato XXXXXX." +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Informe um número de organização sueco válido." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Informe um número sueco de identidade pessoal válido." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Números de coordenação não são permitidos." + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "Informe um código postal sueco válido no formato XXXXX." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Estocolmo" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotlândia" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Banská Bystrica" @@ -3760,20 +4302,45 @@ msgid "Wales" msgstr "País de Gales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Informe um código postal no formato XXXXX ou XXXXX-XXXX." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Números de telefone devem estar no formato XXX-XXX-XXXX." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Informe um número de Seguro Social dos EUA válido no formato XXX-XX-XXXX." -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "Insira um estado ou território dos E.U.A." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado dos E.U.A. (duas letras maiúsculas)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Número de telefone" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" +"Informe um número CI válido no formato X.XXX.XXX-X,XXXXXXX-X ou XXXXXXXX." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Informe um número CI válido." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Informe um ID sul-africado válido." -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Informe um código postal sul-africado válido." @@ -3813,6 +4380,10 @@ msgid "Western Cape" msgstr "Cabo Ocidental" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "mensagem lazy" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirecionar de" @@ -3877,60 +4448,221 @@ msgid "sites" msgstr "sites" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Este valor deve ser um inteiro." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Este valor deve ser True ou False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Informe um valor válido." + +#: core/validators.py:87 forms/fields.py:517 +msgid "Enter a valid URL." +msgstr "Informe uma URL válida." + +#: core/validators.py:89 forms/fields.py:518 +msgid "This URL appears to be a broken link." +msgstr "A URL %s aparenta ser um link quebrado." + +#: core/validators.py:123 forms/fields.py:861 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Insira um \"slug\" válido consistindo de letras, números, sublinhados (_) ou " +"hífens." + +#: core/validators.py:126 forms/fields.py:854 +msgid "Enter a valid IPv4 address." +msgstr "Informe um endereço IPv4 válido." + +#: core/validators.py:129 db/models/fields/__init__.py:598 +msgid "Enter only digits separated by commas." +msgstr "Informe apenas dígitos separados por vírgulas." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Certifique-se de que o valor é %(limit_value)s (ele é %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:196 forms/fields.py:246 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Certifique-se que este valor seja menor ou igual a %(limit_value)s." + +#: core/validators.py:158 forms/fields.py:197 forms/fields.py:247 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Certifique-se que este valor seja maior ou igual a %(limit_value)s." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Certifique-se de que o valor tenha no mínimo %(limit_value)d caracteres (ele " +"possui %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Certifique-se de que o valor tenha no máximo %(limit_value)d caracteres (ele " +"possui %(show_value)d)." + +#: db/models/base.py:818 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s deverá ser único para %(date_field)s %(lookup)s." + +#: db/models/base.py:833 db/models/base.py:841 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s com este %(field_label)s já existe." + +#: db/models/fields/__init__.py:62 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "O valor %r não é uma escolha válida." + +#: db/models/fields/__init__.py:63 msgid "This field cannot be null." msgstr "Este campo não pode ser nulo." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Informe apenas dígitos separados por vírgulas." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:64 +msgid "This field cannot be blank." +msgstr "Este campo não pode estar em branco." + +#: db/models/fields/__init__.py:69 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Campo do tipo: %(field_type)s" + +#: db/models/fields/__init__.py:477 db/models/fields/__init__.py:878 +#: db/models/fields/__init__.py:981 db/models/fields/__init__.py:992 +#: db/models/fields/__init__.py:1019 +msgid "Integer" +msgstr "Inteiro" + +#: db/models/fields/__init__.py:481 db/models/fields/__init__.py:876 +msgid "This value must be an integer." +msgstr "Este valor deve ser um inteiro." + +#: db/models/fields/__init__.py:516 +msgid "This value must be either True or False." +msgstr "Este valor deve ser True ou False." + +#: db/models/fields/__init__.py:518 +msgid "Boolean (Either True or False)" +msgstr "Booleano (Verdadeiro ou Falso)" + +#: db/models/fields/__init__.py:565 db/models/fields/__init__.py:1002 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "String (até %(max_length)s)" + +#: db/models/fields/__init__.py:593 +msgid "Comma-separated integers" +msgstr "Inteiros separados por vírgula" + +#: db/models/fields/__init__.py:607 +msgid "Date (without time)" +msgstr "Data (sem hora)" + +#: db/models/fields/__init__.py:611 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Informe uma data válida no formato AAAA-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:612 #, python-format msgid "Invalid date: %s" msgstr "Data inválida: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:693 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "" "Informe uma data/hora válida no formato YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:695 +msgid "Date (with time)" +msgstr "Data e hora" + +#: db/models/fields/__init__.py:761 msgid "This value must be a decimal number." msgstr "Este valor deve ser um número decimal." -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:763 +msgid "Decimal number" +msgstr "Número decimal" + +#: db/models/fields/__init__.py:818 +msgid "E-mail address" +msgstr "Endereço de e-mail" + +#: db/models/fields/__init__.py:825 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Caminho de arquivo" + +#: db/models/fields/__init__.py:848 msgid "This value must be a float." msgstr "Este valor deve ser um ponto flutuante." -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:850 +msgid "Floating point number" +msgstr "Número de ponto flutuante" + +#: db/models/fields/__init__.py:903 +msgid "Big (8 byte) integer" +msgstr "Inteiro grande (8 byte)" + +#: db/models/fields/__init__.py:932 msgid "This value must be either None, True or False." msgstr "Este valor deve ser None, True ou False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:934 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (Verdadeiro, Falso ou Nada)" + +#: db/models/fields/__init__.py:1025 +msgid "Text" +msgstr "Texto" + +#: db/models/fields/__init__.py:1041 +msgid "Time" +msgstr "Hora" + +#: db/models/fields/__init__.py:1045 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Informe uma hora válida no formato HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:816 +#: db/models/fields/__init__.py:1129 +msgid "XML text" +msgstr "Texto XML" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Model %(model)s com chave primária %(pk)r não existe." + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "Chave Estrangeira (tipo determinado pelo campo relacionado)" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "Relacionamento um-para-um" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "Relacionamento muitos-para-muitos" + +#: db/models/fields/related.py:959 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenha pressionado \"Control\" (ou \"Command\" no Mac) para selecionar " "mais de uma opção." -#: db/models/fields/related.py:894 +#: db/models/fields/related.py:1020 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3941,87 +4673,59 @@ "Por favor, informe IDs válidos para %(self)s. Os valores %(value)r são " "inválidos." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Este campo é obrigatório." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Informe um valor válido." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Certifique-se de que o valor tenha no máximo %(max)d caracteres (ele possui %" -"(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Certifique-se de que o valor tenha no mínimo %(min)d caracteres (ele possui %" -"(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:195 msgid "Enter a whole number." msgstr "Informe um número inteiro." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Certifique-se que este valor seja menor ou igual a %s." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Certifique-se que este valor seja maior ou igual a %s." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:225 forms/fields.py:245 msgid "Enter a number." msgstr "Informe um número." -#: forms/fields.py:227 +#: forms/fields.py:248 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Certifique-se de que não tenha mais de %s dígitos no total." -#: forms/fields.py:228 +#: forms/fields.py:249 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Certifique-se de que não tenha mais de %s casa decimais." -#: forms/fields.py:229 +#: forms/fields.py:250 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "" "Certifique-se de que não tenha mais de %s dígitos antes do ponto decimal." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:311 forms/fields.py:826 msgid "Enter a valid date." msgstr "Informe uma data válida." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:339 forms/fields.py:827 msgid "Enter a valid time." msgstr "Informe uma hora válida." -#: forms/fields.py:361 +#: forms/fields.py:365 msgid "Enter a valid date/time." msgstr "Informe uma data/hora válida." -#: forms/fields.py:447 +#: forms/fields.py:423 msgid "No file was submitted. Check the encoding type on the form." msgstr "Nenhum arquivo enviado. Verifique o tipo de codificação do formulário." -#: forms/fields.py:448 +#: forms/fields.py:424 msgid "No file was submitted." msgstr "Não foi enviado nenhum arquivo." -#: forms/fields.py:449 +#: forms/fields.py:425 msgid "The submitted file is empty." msgstr "O arquivo enviado está vazio." -#: forms/fields.py:450 +#: forms/fields.py:426 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4029,7 +4733,7 @@ "Certifique-se de que o arquivo tenha no máximo %(max)d caracteres (ele " "possui %(length)d)." -#: forms/fields.py:483 +#: forms/fields.py:461 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4037,62 +4741,31 @@ "Envie uma imagem válida. O arquivo enviado não é uma imagem ou está " "corrompido." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Informe uma URL válida." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "A URL %s aparenta ser um link quebrado." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:584 forms/fields.py:659 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Faça uma escolha válida. %(value)s não está disponível." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003 -#: forms/models_flymake.py:1003 +#: forms/fields.py:660 forms/fields.py:722 forms/models.py:989 msgid "Enter a list of values." msgstr "Informe uma lista de valores." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Informe um endereço IPv4 válido." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Insira um \"slug\" válido consistindo de letras, números, sublinhados (_) ou " -"hífens." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:293 forms/formsets.py:295 msgid "Order" msgstr "Ordem" -#: forms/models.py:367 forms/models_flymake.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s deverá ser único para %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 forms/models_flymake.py:381 -#: forms/models_flymake.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s com este %(field_label)s já existe." - -#: forms/models.py:594 forms/models_flymake.py:594 +#: forms/models.py:550 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Por favor, corrija o valor duplicado para %(field)s." -#: forms/models.py:598 forms/models_flymake.py:598 +#: forms/models.py:554 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" "Por favor, corrija o valor duplicado para %(field)s, o qual deve ser único" -#: forms/models.py:604 forms/models_flymake.py:604 +#: forms/models.py:560 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4101,52 +4774,52 @@ "Por favor corrija os dados duplicados em %(field_name)s que deverá ser único " "para o %(lookup)s em %(date_field)s." -#: forms/models.py:612 forms/models_flymake.py:612 +#: forms/models.py:568 msgid "Please correct the duplicate values below." msgstr "Por favor, corrija os valores duplicados abaixo." -#: forms/models.py:867 forms/models_flymake.py:867 +#: forms/models.py:842 msgid "The inline foreign key did not match the parent instance primary key." msgstr "" "A chave estrangeira no inline não coincide com a chave primária na instância " "pai." -#: forms/models.py:930 forms/models_flymake.py:930 +#: forms/models.py:908 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Faça uma escolha válida. Sua escolha não é uma das disponíveis." -#: forms/models.py:1004 forms/models_flymake.py:1004 +#: forms/models.py:990 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Faça uma escolha válida. %s não está disponível." -#: forms/models.py:1006 forms/models_flymake.py:1006 +#: forms/models.py:992 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "\"%s\" não é um valor válido para uma chave primária." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "sim,não,talvez" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4355,7 +5028,7 @@ msgid "Dec." msgstr "Dez." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "ou" @@ -4409,33 +5082,38 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" msgstr "j \\de N \\de Y" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j \\de N \\de Y à\\s H:i" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F \\de Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j \\de F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s: criado com sucesso." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s: atualizado com sucesso." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s: excluído." + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt_BR/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/pt_BR/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/pt_BR/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,35 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'j \de N \de Y' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = r'j \de N \de Y à\s H:i' +YEAR_MONTH_FORMAT = r'F \de Y' +MONTH_DAY_FORMAT = r'j \de F' +SHORT_DATE_FORMAT = 'd/m/Y' +SHORT_DATETIME_FORMAT = 'd/m/Y H:i' +FIRST_DAY_OF_WEEK = 0 # Sunday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06' + # '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006' + # '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' + '%d/%m/%y %H:%M', # '25/10/06 14:30' + '%d/%m/%y', # '25/10/06' + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ro/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/ro/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ro/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/ro/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/ro/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -17,19 +17,19 @@ #: .\conf\global_settings.py:39 msgid "Arabic" -msgstr "Araba" +msgstr "Arabă" #: .\conf\global_settings.py:40 msgid "Bengali" -msgstr "Bengaleza" +msgstr "Bengaleză" #: .\conf\global_settings.py:41 msgid "Bulgarian" -msgstr "Bulgara" +msgstr "Bulgară" #: .\conf\global_settings.py:42 msgid "Catalan" -msgstr "Catalana" +msgstr "Catalană" #: .\conf\global_settings.py:43 msgid "Czech" @@ -37,11 +37,11 @@ #: .\conf\global_settings.py:44 msgid "Welsh" -msgstr "Galeza" +msgstr "Galeză" #: .\conf\global_settings.py:45 msgid "Danish" -msgstr "Daneza" +msgstr "Daneză" #: .\conf\global_settings.py:46 msgid "German" @@ -49,7 +49,7 @@ #: .\conf\global_settings.py:47 msgid "Greek" -msgstr "Greaca" +msgstr "Greacă" #: .\conf\global_settings.py:48 msgid "English" @@ -61,19 +61,19 @@ #: .\conf\global_settings.py:50 msgid "Argentinean Spanish" -msgstr "Spaniola argentiniana" +msgstr "Spaniolă argentiniană" #: .\conf\global_settings.py:51 msgid "Basque" -msgstr "Basca" +msgstr "Bască" #: .\conf\global_settings.py:52 msgid "Persian" -msgstr "Persana" +msgstr "Persană" #: .\conf\global_settings.py:53 msgid "Finnish" -msgstr "Finlandeza" +msgstr "Finlandeză" #: .\conf\global_settings.py:54 msgid "French" @@ -81,7 +81,7 @@ #: .\conf\global_settings.py:55 msgid "Irish" -msgstr "Irlandeza" +msgstr "Irlandeză" #: .\conf\global_settings.py:56 msgid "Galician" @@ -89,19 +89,19 @@ #: .\conf\global_settings.py:57 msgid "Hungarian" -msgstr "Ungara" +msgstr "Ungară" #: .\conf\global_settings.py:58 msgid "Hebrew" -msgstr "Ebraica" +msgstr "Ebraică" #: .\conf\global_settings.py:59 msgid "Croatian" -msgstr "Croata" +msgstr "Croată" #: .\conf\global_settings.py:60 msgid "Icelandic" -msgstr "Islandeza" +msgstr "Islandeză" #: .\conf\global_settings.py:61 msgid "Italian" @@ -109,19 +109,19 @@ #: .\conf\global_settings.py:62 msgid "Japanese" -msgstr "Japoneza" +msgstr "Japoneză" #: .\conf\global_settings.py:63 msgid "Georgian" -msgstr "Georgiana" +msgstr "Georgiană" #: .\conf\global_settings.py:64 msgid "Korean" -msgstr "Koreana" +msgstr "Koreană" #: .\conf\global_settings.py:65 msgid "Khmer" -msgstr "Khmera" +msgstr "Khmeră" #: .\conf\global_settings.py:66 msgid "Kannada" @@ -129,15 +129,15 @@ #: .\conf\global_settings.py:67 msgid "Latvian" -msgstr "Letona" +msgstr "Letonă" #: .\conf\global_settings.py:68 msgid "Macedonian" -msgstr "Macedoneana" +msgstr "Macedoneană" #: .\conf\global_settings.py:69 msgid "Dutch" -msgstr "Olandeza" +msgstr "Olandeză" #: .\conf\global_settings.py:70 msgid "Norwegian" @@ -145,19 +145,19 @@ #: .\conf\global_settings.py:71 msgid "Polish" -msgstr "Poloneza" +msgstr "Poloneză" #: .\conf\global_settings.py:72 msgid "Portugese" -msgstr "Portugheza" +msgstr "Portugheză" #: .\conf\global_settings.py:73 msgid "Brazilian Portuguese" -msgstr "Portugheza braziliana" +msgstr "Portugheză braziliană" #: .\conf\global_settings.py:74 msgid "Romanian" -msgstr "Romana" +msgstr "Română" #: .\conf\global_settings.py:75 msgid "Russian" @@ -165,19 +165,19 @@ #: .\conf\global_settings.py:76 msgid "Slovak" -msgstr "Slovaca" +msgstr "Slovacă" #: .\conf\global_settings.py:77 msgid "Slovenian" -msgstr "Slovena" +msgstr "Slovenă" #: .\conf\global_settings.py:78 msgid "Serbian" -msgstr "Sîrbă" +msgstr "Sârbă" #: .\conf\global_settings.py:79 msgid "Swedish" -msgstr "Suedeza" +msgstr "Suedeză" #: .\conf\global_settings.py:80 msgid "Tamil" @@ -189,11 +189,11 @@ #: .\conf\global_settings.py:82 msgid "Turkish" -msgstr "Turca" +msgstr "Turcă" #: .\conf\global_settings.py:83 msgid "Ukrainian" -msgstr "Ucraineana" +msgstr "Ucraineană" #: .\conf\global_settings.py:84 msgid "Simplified Chinese" @@ -201,7 +201,7 @@ #: .\conf\global_settings.py:85 msgid "Traditional Chinese" -msgstr "Chineza traditionala" +msgstr "Chineză tradițională" #: .\contrib\admin\filterspecs.py:44 #, python-format @@ -209,7 +209,7 @@ "

                                By %s:

                                \n" "
                                  \n" msgstr "" -"

                                  Dupa %s:

                                  \n" +"

                                  După %s:

                                  \n" "
                                    \n" #: .\contrib\admin\filterspecs.py:74 @@ -225,7 +225,7 @@ #: .\contrib\admin\filterspecs.py:114 msgid "Today" -msgstr "Astazi" +msgstr "Astăzi" #: .\contrib\admin\filterspecs.py:117 msgid "Past 7 days" @@ -325,7 +325,7 @@ #: .\contrib\admin\templates\admin\500.html.py: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 "A apărut o eroare. Este raportată către administrator via emailşi va fi fixată în scurt timp. Mulţumim pentru înţelegere." +msgstr "A apărut o eroare. Este raportată către administrator via email şi va fi reparată în scurt timp. Mulţumim pentru înţelegere." #: .\contrib\admin\templates\admin\base.html.py:26 msgid "Welcome," @@ -334,7 +334,7 @@ #: .\contrib\admin\templates\admin\base.html.py:28 #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 msgid "Documentation" -msgstr "Documentatie" +msgstr "Documentație" #: .\contrib\admin\templates\admin\base.html.py:29 #: .\contrib\admin\templates\admin\auth\user\change_password.html.py:14 @@ -367,18 +367,18 @@ #: .\contrib\admin\templates\admin\change_form.html.py:21 msgid "View on site" -msgstr "Vizualizeaza pe site" +msgstr "Vizualizează pe site" #: .\contrib\admin\templates\admin\change_form.html.py:31 #: .\contrib\admin\templates\admin\auth\user\change_password.html.py:23 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "Va rugam sa corectati eroarea de mai jos" -msgstr[1] "Va rugam sa corectati erorile de mai jos" +msgstr[0] "Vă rugăm să corectați eroarea de mai jos" +msgstr[1] "Vă rugăm să corectați erorile de mai jos" #: .\contrib\admin\templates\admin\change_form.html.py:49 msgid "Ordering" -msgstr "Ordonate dupa" +msgstr "Ordonate după" #: .\contrib\admin\templates\admin\change_form.html.py:52 msgid "Order:" @@ -392,12 +392,12 @@ #: .\contrib\admin\templates\admin\delete_confirmation.html.py:8 #: .\contrib\admin\templates\admin\submit_line.html.py:3 msgid "Delete" -msgstr "Sterge" +msgstr "Șterge" #: .\contrib\admin\templates\admin\delete_confirmation.html.py:13 #, python-format msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "Ştergînd %(object_name)s '%(escaped_object)s' va avea ca rezultat ştergerea şi a obiectelor ce au legătură, dar contul tău nu are permisiunea de a şterge următoarele tipuri de obiecte:" +msgstr "Ştergerea %(object_name)s '%(escaped_object)s' ar cauza și ştergerea obiectelor asociate, dar contul tău nu are permisiunea de a şterge următoarele tipuri de obiecte:" #: .\contrib\admin\templates\admin\delete_confirmation.html.py:20 #, python-format @@ -406,12 +406,12 @@ #: .\contrib\admin\templates\admin\delete_confirmation.html.py:25 msgid "Yes, I'm sure" -msgstr "Da, sînt sigur" +msgstr "Da, sunt sigur" #: .\contrib\admin\templates\admin\filter.html.py:2 #, python-format msgid " By %(filter_title)s " -msgstr "Dupa %(filter_title)s " +msgstr "După %(filter_title)s " #: .\contrib\admin\templates\admin\filters.html.py:4 msgid "Filter" @@ -420,7 +420,7 @@ #: .\contrib\admin\templates\admin\index.html.py:17 #, python-format msgid "Models available in the %(name)s application." -msgstr "Modele disponibile in applicatia %(name)s" +msgstr "Modele disponibile în aplicația %(name)s" #: .\contrib\admin\templates\admin\index.html.py:18 #, python-format @@ -437,11 +437,11 @@ #: .\contrib\admin\templates\admin\index.html.py:52 msgid "Recent Actions" -msgstr "Acţiuni Recente" +msgstr "Acţiuni recente" #: .\contrib\admin\templates\admin\index.html.py:53 msgid "My Actions" -msgstr "Acţiunile Mele" +msgstr "Acţiunile mele" #: .\contrib\admin\templates\admin\index.html.py:57 msgid "None available" @@ -449,7 +449,7 @@ #: .\contrib\admin\templates\admin\invalid_setup.html.py:8 msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." -msgstr "Exista o problema cu baza de date. Verificati daca tabelele necesare din baza de date au fost create si verificati daca baza de date poate fi citita de utilizatorul potrivit." +msgstr "Există o problema cu baza de date. Verificați dacă tabelele necesare din baza de date au fost create și verificați dacă baza de date poate fi citită de utilizatorul potrivit." #: .\contrib\admin\templates\admin\login.html.py:17 #: .\contrib\comments\templates\comments\form.html.py:6 @@ -460,7 +460,7 @@ #: .\contrib\admin\templates\admin\login.html.py:20 #: .\contrib\comments\templates\comments\form.html.py:8 msgid "Password:" -msgstr "Parola:" +msgstr "Parolă:" #: .\contrib\admin\templates\admin\login.html.py:25 #: .\contrib\admin\views\decorators.py:31 @@ -485,11 +485,11 @@ #: .\contrib\admin\templates\admin\object_history.html.py:35 msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "Acest obiect nu are un istoric al schimbărilor. Probabil nu a fost adăugat prinintermediul acestui sit de administrare." +msgstr "Acest obiect nu are un istoric al schimbărilor. Probabil nu a fost adăugat prin intermediul acestui sit de administrare." #: .\contrib\admin\templates\admin\pagination.html.py:10 msgid "Show all" -msgstr "Arata tot/toate" +msgstr "Arată tot/toate" #: .\contrib\admin\templates\admin\search_form.html.py:8 msgid "Go" @@ -509,23 +509,23 @@ #: .\contrib\admin\templates\admin\submit_line.html.py:4 msgid "Save as new" -msgstr "Salvati ca nou" +msgstr "Salvați ca nou" #: .\contrib\admin\templates\admin\submit_line.html.py:5 msgid "Save and add another" -msgstr "Salvati si adaugati altul" +msgstr "Salvați și adăugați altul" #: .\contrib\admin\templates\admin\submit_line.html.py:6 msgid "Save and continue editing" -msgstr "Salvati si continuati" +msgstr "Salvați și continuați" #: .\contrib\admin\templates\admin\submit_line.html.py:7 msgid "Save" -msgstr "Salveaza" +msgstr "Salvează" #: .\contrib\admin\templates\admin\auth\user\add_form.html.py:6 msgid "First, enter a username and password. Then, you'll be able to edit more user options." -msgstr "Intai introduceti un nume de utilizator si o parola. Apoi veti putea modifica mai multe optiuni de utilizator." +msgstr "Introduceți mai întâi un nume de utilizator și o parolă. Apoi veți putea modifica mai multe opțiuni de utilizator." #: .\contrib\admin\templates\admin\auth\user\add_form.html.py:12 msgid "Username" @@ -534,30 +534,30 @@ #: .\contrib\admin\templates\admin\auth\user\add_form.html.py:18 #: .\contrib\admin\templates\admin\auth\user\change_password.html.py:33 msgid "Password" -msgstr "Parola" +msgstr "Parolă" #: .\contrib\admin\templates\admin\auth\user\add_form.html.py:23 #: .\contrib\admin\templates\admin\auth\user\change_password.html.py:38 msgid "Password (again)" -msgstr "Parola (repeta)" +msgstr "Parolă (din nou)" #: .\contrib\admin\templates\admin\auth\user\add_form.html.py:24 #: .\contrib\admin\templates\admin\auth\user\change_password.html.py:39 msgid "Enter the same password as above, for verification." -msgstr "Introduceti parola din nou pentru verificare." +msgstr "Introduceți parola din nou pentru verificare." #: .\contrib\admin\templates\admin\auth\user\change_password.html.py:27 #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "Introduceti o parola noua pentru utilizatorul %(username)s." +msgstr "Introduceți o parolă nouă pentru utilizatorul %(username)s." #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 msgid "Bookmarklets" -msgstr "" +msgstr "Bookmarklet-uri" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4 msgid "Documentation bookmarklets" -msgstr "" +msgstr "Bookmarklet-uri documentație" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:8 msgid "" @@ -569,42 +569,49 @@ "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

                                    \n" msgstr "" +"\n" +"

                                    Pentru a instala bookmarklet-uri, trage link-ul în bara de\n" +"bookmark-uri, sau click dreapta pe link și adaugă la bookmark-uri. Acum poți\n" +"selecta bookmarklet-ul din orice pagina a sitului. Este posibil ca unele din\n" +"aceste bookmarklet-uri sunt accesibile doar de pe un computer desemnat ca\n" +"\"intern\" (vorbește cu administratorul tău de sistem dacă nu ești sigur că\n" +"al tău este \"intern\").

                                    \n" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:18 msgid "Documentation for this page" -msgstr "Documentatie pentru aceasta pagina" +msgstr "Documentație pentru această pagină" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:19 msgid "Jumps you from any page to the documentation for the view that generates that page." -msgstr "Te trimite de la orice pagina la documentatia pentru view-ul care genereaza acea pagina." +msgstr "Te trimite de la orice pagină la documentația pentru view-ul care generează acea pagină." #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:21 msgid "Show object ID" -msgstr "Arata ID-ul obiectului" +msgstr "Arată ID-ul obiectului" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:22 msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Arata tipul de continut si ID-ul unic pentru paginile care reprezinta un singur obiect." +msgstr "Arată tipul de conținut și ID-ul unic pentru paginile ce reprezintă un singur obiect." #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:24 msgid "Edit this object (current window)" -msgstr "Modifica acest obiect (in aceasta fereastra)" +msgstr "Modifică acest obiect (în fereastra curentă)" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:25 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Sare la pagina de administrare pentru pagini care reprezinta un singur obiect." +msgstr "Sare la pagina de administrare pentru pagini ce reprezintă un singur obiect." #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:27 msgid "Edit this object (new window)" -msgstr "Modifica acest obiect (intr-o fereastra noua)" +msgstr "Modifică acest obiect (într-o fereastra nouă)" #: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:28 msgid "As above, but opens the admin page in a new window." -msgstr "La fel ca deasupra, dar deschide pagina de administrare intr-o fereastra noua" +msgstr "La fel ca mai sus, dar deschide pagina de administrare într-o fereastră nouă" #: .\contrib\admin\templates\registration\logged_out.html.py:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Mulţumesc pentru petrecerea folositoare a timpului cu saitul astăzi." +msgstr "Mulţumesc pentru petrecerea folositoare a timpului cu situl astăzi." #: .\contrib\admin\templates\registration\logged_out.html.py:10 msgid "Log in again" @@ -628,7 +635,7 @@ #: .\contrib\admin\templates\registration\password_change_form.html.py:11 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 "Introdu te rog vechea parolă, pentru motive de siguranţă, şi apoi tastează noua parolă de două ori aşa încît putem verifica dacă ai tastat corect." +msgstr "Introdu te rog vechea parolă, pentru motive de siguranţă, şi apoi tastează noua parolă de două ori pentru a verifica dacă ai tastat corect." #: .\contrib\admin\templates\registration\password_change_form.html.py:16 msgid "Old password:" @@ -660,7 +667,7 @@ #: .\contrib\admin\templates\registration\password_reset_done.html.py:12 msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Am trimis o nouă parolă prin email la adresa furnizată. Ar trebuisă o primeşti în scurt timp." +msgstr "Am trimis o nouă parolă prin email la adresa furnizată. Ar trebui să o primeşti în scurt timp." #: .\contrib\admin\templates\registration\password_reset_email.html.py:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -678,15 +685,15 @@ #: .\contrib\admin\templates\registration\password_reset_email.html.py:7 msgid "Feel free to change this password by going to this page:" -msgstr "Poţi schmiba această parolă vizitînd această pagină:" +msgstr "Poţi schmiba această parolă vizitând această pagină:" #: .\contrib\admin\templates\registration\password_reset_email.html.py:11 msgid "Your username, in case you've forgotten:" -msgstr "Numele tău utilizator, în caz că ai uitat:" +msgstr "Numele tău de utilizator, în caz că ai uitat:" #: .\contrib\admin\templates\registration\password_reset_email.html.py:13 msgid "Thanks for using our site!" -msgstr "Mulţumesc pentru folosirea saitului nostru!" +msgstr "Mulţumesc pentru folosirea sitului nostru!" #: .\contrib\admin\templates\registration\password_reset_email.html.py:15 #, python-format @@ -734,7 +741,7 @@ #: .\contrib\admin\views\main.py:271 #: .\contrib\admin\views\main.py:356 msgid "You may edit it again below." -msgstr "Va puteti edita datele din nou mai jos." +msgstr "Vă puteți edita datele din nou mai jos." #: .\contrib\admin\views\auth.py:31 msgid "Add user" @@ -752,24 +759,24 @@ #: .\contrib\admin\views\decorators.py:17 #: .\contrib\auth\forms.py:60 msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "Va rugam sa introduceti username-ul si parola corecta. Aveti grija deoarececasutele sunt case sensitive." +msgstr "Va rugăm să introduceți numele de utilizator și parola corecte. Aveți grijă deoarece căsuțele sunt case sensitive." #: .\contrib\admin\views\decorators.py:69 msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." -msgstr "Va rugam sa va inregistrati din nou, deoarece sesiunea a expirat. Nu va faceti griji datele au fost salvate." +msgstr "Vă rugăm să vă înregistrați din nou, deoarece sesiunea a expirat. Nu vă faceti griji: datele au fost salvate." #: .\contrib\admin\views\decorators.py:76 msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "Se pare ca browserul dumneavostra nu este configurat sa accepte cookies. Va rugam sa va setati browserul sa accepte cookies, dati un reload la pagina si incercati din nou." +msgstr "Se pare că browserul dumneavostră nu este configurat să accepte cookies. Vă rugăm să vă setați browserul să accepte cookies, dați un reload la pagină și încercați din nou." #: .\contrib\admin\views\decorators.py:90 msgid "Usernames cannot contain the '@' character." -msgstr "Username-ul nu are voie sa contina caracterul '@'." +msgstr "Username-ul nu are voie să conțină caracterul '@'." #: .\contrib\admin\views\decorators.py:92 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Adresa ta de e-mail nu este numele tau de utilizator. Incearca '%s' in schimb." +msgstr "Adresa ta de e-mail nu este numele tău de utilizator. Incearcă '%s' în schimb." #: .\contrib\admin\views\doc.py:48 #: .\contrib\admin\views\doc.py:50 @@ -797,7 +804,7 @@ #: .\contrib\admin\views\doc.py:173 #, python-format msgid "Model %(name)r not found in app %(label)r" -msgstr "Modelul %(name)r nu a fost gasit in aplicatia %(label)r" +msgstr "Modelul %(name)r nu a fost gasit în aplicatia %(label)r" #: .\contrib\admin\views\doc.py:185 #, python-format @@ -824,12 +831,12 @@ #: .\contrib\admin\views\doc.py:226 #, python-format msgid "number of %s" -msgstr "numarul de %s" +msgstr "numărul de %s" #: .\contrib\admin\views\doc.py:231 #, python-format msgid "Fields on %s objects" -msgstr "Campuri in %s obiecte" +msgstr "Campuri în %s obiecte" #: .\contrib\admin\views\doc.py:293 #: .\contrib\admin\views\doc.py:304 @@ -852,7 +859,7 @@ #: .\contrib\admin\views\doc.py:296 msgid "Comma-separated integers" -msgstr "Numere intregi separate de virgule" +msgstr "Numere întregi separate de virgule" #: .\contrib\admin\views\doc.py:297 msgid "Date (without time)" @@ -864,7 +871,7 @@ #: .\contrib\admin\views\doc.py:299 msgid "Decimal number" -msgstr "Numar zecimal" +msgstr "Număr zecimal" #: .\contrib\admin\views\doc.py:300 msgid "E-mail address" @@ -878,7 +885,7 @@ #: .\contrib\admin\views\doc.py:303 msgid "Floating point number" -msgstr "Numar cu virgula" +msgstr "Număr cu virgula" #: .\contrib\admin\views\doc.py:307 #: .\contrib\comments\models.py:89 @@ -895,7 +902,7 @@ #: .\contrib\admin\views\doc.py:311 msgid "Phone number" -msgstr "Numar de telefon" +msgstr "Număr de telefon" #: .\contrib\admin\views\doc.py:316 msgid "Text" @@ -931,7 +938,7 @@ #: .\contrib\admin\views\main.py:365 #, python-format msgid "You may add another %s below." -msgstr "Mai puteti adauga un alt %s mai jos." +msgstr "Mai puteți adauga un alt %s mai jos." #: .\contrib\admin\views\main.py:298 #, python-format @@ -941,7 +948,7 @@ #: .\contrib\admin\views\main.py:344 #, python-format msgid "Added %s." -msgstr "Adaugat %s." +msgstr "Am adăugat %s." #: .\contrib\admin\views\main.py:344 #: .\contrib\admin\views\main.py:346 @@ -949,21 +956,21 @@ #: .\core\validators.py:283 #: .\db\models\manipulators.py:309 msgid "and" -msgstr "si" +msgstr "și" #: .\contrib\admin\views\main.py:346 #, python-format msgid "Changed %s." -msgstr "Schimbă %s." +msgstr "Am schimbat %s." #: .\contrib\admin\views\main.py:348 #, python-format msgid "Deleted %s." -msgstr "Am sters %s." +msgstr "Am șters %s." #: .\contrib\admin\views\main.py:351 msgid "No fields changed." -msgstr "Nu s-a facut nicio schimbare." +msgstr "Nici-un câmp nu a fost schimbat." #: .\contrib\admin\views\main.py:354 #, python-format @@ -973,7 +980,7 @@ #: .\contrib\admin\views\main.py:362 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "%(name)s \"%(obj)s\" au fost adaugate cu succes. Le puteti edita mai jos." +msgstr "%(name)s \"%(obj)s\" au fost adăugate cu succes. Le puteți edita mai jos." #: .\contrib\admin\views\main.py:400 #, python-format @@ -983,45 +990,45 @@ #: .\contrib\admin\views\main.py:487 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Unul sau mai multe %(fieldname)s in %(name)s: %(obj)s" +msgstr "Unul sau mai multe %(fieldname)s în %(name)s: %(obj)s" #: .\contrib\admin\views\main.py:492 #, python-format msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Unul sau mai multe %(fieldname)s in %(name)s:" +msgstr "Unul sau mai multe %(fieldname)s în %(name)s:" #: .\contrib\admin\views\main.py:524 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" au fost sterse cu succes." +msgstr "%(name)s \"%(obj)s\" au fost șterse cu succes." #: .\contrib\admin\views\main.py:527 msgid "Are you sure?" -msgstr "Sunteti sigur?" +msgstr "Sunteți sigur?" #: .\contrib\admin\views\main.py:549 #, python-format msgid "Change history: %s" -msgstr "Schimbari facute: %s" +msgstr "Schimbări făcute: %s" #: .\contrib\admin\views\main.py:583 #, python-format msgid "Select %s" -msgstr "Selecteaza %s" +msgstr "Selectează %s" #: .\contrib\admin\views\main.py:583 #, python-format msgid "Select %s to change" -msgstr "Selecteaza %s pentru schimbare" +msgstr "Selectează %s pentru schimbare" #: .\contrib\admin\views\main.py:784 msgid "Database error" -msgstr "Erroare de baza de date" +msgstr "Eroare de bază de date" #: .\contrib\auth\forms.py:17 #: .\contrib\auth\forms.py:138 msgid "The two password fields didn't match." -msgstr "Cele doua campuri pentru parole nu au coincis." +msgstr "Cele doua câmpuri pentru parole nu au coincis." #: .\contrib\auth\forms.py:25 msgid "A user with that username already exists." @@ -1029,7 +1036,7 @@ #: .\contrib\auth\forms.py:53 msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." -msgstr "Se pare ca browserul dumneavoastra nu suporta cookies. Aveti nevoie de un browser care suporta cookies ca sa va logati." +msgstr "Se pare că browserul dumneavoastra nu suporta cookies. Aveti nevoie de un browser care suporta cookies ca să vă logati." #: .\contrib\auth\forms.py:62 msgid "This account is inactive." @@ -1037,20 +1044,20 @@ #: .\contrib\auth\forms.py:84 msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" -msgstr "Acea adresa de e-mail nu are un nume de utilizator asociat. Sunteti sigur ca v-ati inregistrat?" +msgstr "Acea adresa de e-mail nu are un nume de utilizator asociat. Sunteți sigur că v-ați înregistrat?" #: .\contrib\auth\forms.py:107 #, python-format msgid "Password reset on %s" -msgstr "Parola resetata pe %s" +msgstr "Parola resetată pe %s" #: .\contrib\auth\forms.py:117 msgid "The two 'new password' fields didn't match." -msgstr "Cele doua campuri 'parola noua' nu au coincis." +msgstr "Cele două câmpuri 'parola noua' nu au coincis." #: .\contrib\auth\forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "Parola veche a dumneavoastra a fost introdusa incorect. Va rugam introduceti-o din nou." +msgstr "Parola dumneavoastră veche a fost introdusă incorect. Vă rugăm să o introduceți din nou." #: .\contrib\auth\models.py:73 #: .\contrib\auth\models.py:93 @@ -1085,7 +1092,7 @@ #: .\contrib\auth\models.py:131 msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "Necesar. 30 de caractere sau mai putin. Doar caractere alfanumerice (litere, cifre, liniute de subliniere)." +msgstr "Necesar. 30 de caractere sau mai puțin. Doar caractere alfanumerice (litere, cifre, liniuțe de subliniere)." #: .\contrib\auth\models.py:132 msgid "first name" @@ -1097,15 +1104,15 @@ #: .\contrib\auth\models.py:134 msgid "e-mail address" -msgstr "adresa email" +msgstr "adresă email" #: .\contrib\auth\models.py:135 msgid "password" -msgstr "parola" +msgstr "parolă" #: .\contrib\auth\models.py:135 msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." -msgstr "Folositi '[algo]$[salt]$[hexdigest]' sau folositi formularul de schimbare a parolei." +msgstr "Folosiți '[algo]$[salt]$[hexdigest]' sau folosiți formularul de schimbare a parolei." #: .\contrib\auth\models.py:136 msgid "staff status" @@ -1113,7 +1120,7 @@ #: .\contrib\auth\models.py:136 msgid "Designates whether the user can log into this admin site." -msgstr "Decide cînd utilizatorul se poate loga în acest sit de adminstrare." +msgstr "Decide când utilizatorul se poate loga în acest sit de adminstrare." #: .\contrib\auth\models.py:137 msgid "active" @@ -1121,7 +1128,7 @@ #: .\contrib\auth\models.py:137 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." -msgstr "Indica daca acest user va fi tratat ca activ sau nu. Deselecteaza-l in loc de a sterge conturi." +msgstr "Indică dacă acest utilizator va fi tratat ca activ sau nu. Deselectează-l în loc de a șterge conturi." #: .\contrib\auth\models.py:138 msgid "superuser status" @@ -1129,7 +1136,7 @@ #: .\contrib\auth\models.py:138 msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "Indica daca acest user are toate permisiile fara a le selecta explicit." +msgstr "Indică daca acest user are toate permisiunile fără a le selecta explicit." #: .\contrib\auth\models.py:139 msgid "last login" @@ -1182,7 +1189,7 @@ #: .\contrib\comments\models.py:71 #: .\contrib\comments\models.py:176 msgid "object ID" -msgstr "id obiect" +msgstr "ID obiect" #: .\contrib\comments\models.py:72 msgid "headline" @@ -1233,7 +1240,7 @@ #: .\contrib\comments\models.py:87 #: .\contrib\comments\models.py:179 msgid "date/time submitted" -msgstr "data/ora crearii" +msgstr "data/ora creării" #: .\contrib\comments\models.py:88 #: .\contrib\comments\models.py:180 @@ -1242,11 +1249,11 @@ #: .\contrib\comments\models.py:90 msgid "is removed" -msgstr "sters" +msgstr "șters" #: .\contrib\comments\models.py:90 msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." -msgstr "Bifeaza aceasta casuta daca comentariul nu este adecvat. Un mesaj de tipul \"Acest comentariu a fost sters\" va fi afisat in schimb." +msgstr "Bifează această casuța dacă comentariul nu este adecvat. Un mesaj de tipul \"Acest comentariu a fost șters\" va fi afișat în schimb." #: .\contrib\comments\models.py:96 msgid "comments" @@ -1255,7 +1262,7 @@ #: .\contrib\comments\models.py:140 #: .\contrib\comments\models.py:222 msgid "Content object" -msgstr "Obiect-referinta" +msgstr "Obiect comentariu" #: .\contrib\comments\models.py:168 #, python-format @@ -1282,15 +1289,15 @@ #: .\contrib\comments\models.py:183 msgid "approved by staff" -msgstr "aprobat de echipa" +msgstr "aprobat de echipă" #: .\contrib\comments\models.py:187 msgid "free comment" -msgstr "permite comentariu fara inregistrare" +msgstr "permite comentariu fara înregistrare" #: .\contrib\comments\models.py:188 msgid "free comments" -msgstr "permite comentarii fara inregistrare" +msgstr "permite comentarii fara înregistrare" #: .\contrib\comments\models.py:250 msgid "score" @@ -1313,7 +1320,7 @@ #: .\contrib\comments\models.py:260 #, fuzzy, python-format msgid "%(score)d rating by %(user)s" -msgstr "Punctaj %(score)d atribuit de catre %(user)s" +msgstr "Punctaj %(score)d atribuit de către %(user)s" #: .\contrib\comments\models.py:277 #, python-format @@ -1328,17 +1335,17 @@ #: .\contrib\comments\models.py:285 msgid "flag date" -msgstr "data marcarii" +msgstr "data marcării" #: .\contrib\comments\models.py:289 #, fuzzy msgid "user flag" -msgstr "stegulet de utilizator" +msgstr "steguleț de utilizator" #: .\contrib\comments\models.py:290 #, fuzzy msgid "user flags" -msgstr "stegulete de utilizatori" +msgstr "stegulețe de utilizatori" #: .\contrib\comments\models.py:294 #, python-format @@ -1347,20 +1354,20 @@ #: .\contrib\comments\models.py:300 msgid "deletion date" -msgstr "data stergerii" +msgstr "data ștergerii" #: .\contrib\comments\models.py:303 msgid "moderator deletion" -msgstr "sters de moderator" +msgstr "șters de moderator" #: .\contrib\comments\models.py:304 msgid "moderator deletions" -msgstr "sterse de moderator" +msgstr "șterse de moderator" #: .\contrib\comments\models.py:308 #, python-format msgid "Moderator deletion by %r" -msgstr "Sters de moderatorul %r" +msgstr "Șters de moderatorul %r" #: .\contrib\comments\templates\comments\form.html.py:8 msgid "Forgotten your password?" @@ -1378,11 +1385,11 @@ #: .\contrib\comments\templates\comments\form.html.py:12 #: .\contrib\comments\templates\comments\form.html.py:23 msgid "Optional" -msgstr "Optional" +msgstr "Opțional" #: .\contrib\comments\templates\comments\form.html.py:23 msgid "Post a photo" -msgstr "Adauga o poza" +msgstr "Adaugă o poză" #: .\contrib\comments\templates\comments\form.html.py:28 #: .\contrib\comments\templates\comments\freeform.html.py:5 @@ -1396,11 +1403,11 @@ #: .\contrib\comments\templates\comments\freeform.html.py:4 msgid "Your name:" -msgstr "numele dumneavoastra" +msgstr "numele dumneavoastră" #: .\contrib\comments\views\comments.py:28 msgid "This rating is required because you've entered at least one other rating." -msgstr "Acest rating este necesar deoarece ai introdus cel putin un alt rating." +msgstr "Acest rating este necesar deoarece ai introdus cel puțin un alt rating." #: .\contrib\comments\views\comments.py:112 #, python-format @@ -1413,11 +1420,11 @@ "\n" "%(text)s" msgstr[0] "" -"Acest comentariu a fost postat de un utilizator care a postat mai putin de %(count)s comentariu:\n" +"Acest comentariu a fost postat de un utilizator care a postat mai puțin de %(count)s comentariu:\n" "\n" "%(text)s" msgstr[1] "" -"Acest comentariu a fost postat de un utilizator care a postat mai putin de %(count)s comentarii:\n" +"Acest comentariu a fost postat de un utilizator care a postat mai puțin de %(count)s comentarii:\n" "\n" "%(text)s" @@ -1435,27 +1442,27 @@ #: .\contrib\comments\views\comments.py:190 #: .\contrib\comments\views\comments.py:283 msgid "Only POSTs are allowed" -msgstr "Doar postarile sunt permise" +msgstr "Doar postările sunt permise" #: .\contrib\comments\views\comments.py:194 #: .\contrib\comments\views\comments.py:287 msgid "One or more of the required fields wasn't submitted" -msgstr "Unul sau mai multe campuri necesare nu a fost completat" +msgstr "Unul sau mai multe câmpuri necesare nu au fost completate" #: .\contrib\comments\views\comments.py:198 #: .\contrib\comments\views\comments.py:289 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Cineva a modificat formularul de comentarii (incalcare a securitatii)" +msgstr "Cineva a modificat formularul de comentarii (încălcare a securității)" #: .\contrib\comments\views\comments.py:208 #: .\contrib\comments\views\comments.py:295 msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid" -msgstr "Formularul de comentariu a avut un parametru 'tinta' invalid -- ID-ul obiectului a fost invalid" +msgstr "Formularul de comentariu a avut un parametru 'țintă' invalid -- ID-ul obiectului a fost invalid" #: .\contrib\comments\views\comments.py:259 #: .\contrib\comments\views\comments.py:324 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Formularul de comentariu nu specifica nici 'previzualizare' nici 'postare'" +msgstr "Formularul de comentariu nu specifică nici 'previzualizare' nici 'postare'" #: .\contrib\comments\views\karma.py:21 msgid "Anonymous users cannot vote" @@ -1467,12 +1474,12 @@ #: .\contrib\comments\views\karma.py:27 msgid "No voting for yourself" -msgstr "Nu poti vota pentru tine" +msgstr "Nu poți vota pentru tine" #: .\contrib\contenttypes\models.py:67 #, fuzzy msgid "python model class name" -msgstr "nume clasa model python" +msgstr "nume clasă model python" #: .\contrib\contenttypes\models.py:71 msgid "content type" @@ -1480,11 +1487,11 @@ #: .\contrib\contenttypes\models.py:72 msgid "content types" -msgstr "tipuri conţinute" +msgstr "tipuri conţinut" #: .\contrib\flatpages\models.py:9 msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Exemplu: '/about/contact'. Asiguraţi-vă că aveţi slash-uri la început şi la sfîrşit." +msgstr "Exemplu: '/despre/contact'. Asiguraţi-vă că aveţi slash-uri la început şi la sfârşit." #: .\contrib\flatpages\models.py:10 msgid "title" @@ -1524,7 +1531,7 @@ #: .\contrib\flatpages\models.py:27 msgid "Advanced options" -msgstr "Optiuni avansate" +msgstr "Opțiuni avansate" #: .\contrib\humanize\templatetags\humanize.py:19 msgid "th" @@ -1577,7 +1584,7 @@ #: .\contrib\humanize\templatetags\humanize.py:73 msgid "four" -msgstr "patry" +msgstr "patru" #: .\contrib\humanize\templatetags\humanize.py:73 msgid "five" @@ -1585,11 +1592,11 @@ #: .\contrib\humanize\templatetags\humanize.py:73 msgid "six" -msgstr "sase" +msgstr "șase" #: .\contrib\humanize\templatetags\humanize.py:73 msgid "seven" -msgstr "sapte" +msgstr "șapte" #: .\contrib\humanize\templatetags\humanize.py:73 msgid "eight" @@ -1597,15 +1604,15 @@ #: .\contrib\humanize\templatetags\humanize.py:73 msgid "nine" -msgstr "noua" +msgstr "nouă" #: .\contrib\humanize\templatetags\humanize.py:93 msgid "today" -msgstr "astazi" +msgstr "astăzi" #: .\contrib\humanize\templatetags\humanize.py:95 msgid "tomorrow" -msgstr "maine" +msgstr "mâine" #: .\contrib\humanize\templatetags\humanize.py:97 msgid "yesterday" @@ -1613,7 +1620,7 @@ #: .\contrib\localflavor\ar\forms.py:27 msgid "Enter a postal code in the format NNNN or ANNNNAAA." -msgstr "Introduceti un cod postal valid de forma NNNN sau ANNNNAAA." +msgstr "Introduceți un cod poștal valid de forma NNNN sau ANNNNAAA." #: .\contrib\localflavor\ar\forms.py:49 #: .\contrib\localflavor\br\forms.py:96 @@ -1621,15 +1628,15 @@ #: .\contrib\localflavor\pe\forms.py:23 #: .\contrib\localflavor\pe\forms.py:51 msgid "This field requires only numbers." -msgstr "Acest camp accepta doar numere." +msgstr "Acest câmp acceptă doar numere." #: .\contrib\localflavor\ar\forms.py:50 msgid "This field requires 7 or 8 digits." -msgstr "Acest camp are nevoie de 7 sau 8 cifre." +msgstr "Acest câmp are nevoie de 7 sau 8 cifre." #: .\contrib\localflavor\ar\forms.py:79 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." -msgstr "Introduceti un CUIT valid de forma XX-XXXXXXXX-X sau XXXXXXXXXXXX." +msgstr "Introduceți un CUIT valid de forma XX-XXXXXXXX-X sau XXXXXXXXXXXX." #: .\contrib\localflavor\ar\forms.py:80 msgid "Invalid CUIT." @@ -1637,43 +1644,43 @@ #: .\contrib\localflavor\au\forms.py:16 msgid "Enter a 4 digit post code." -msgstr "Introduceti un cod postal de 4 cifre." +msgstr "Introduceți un cod poștal de 4 cifre." #: .\contrib\localflavor\br\forms.py:21 msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "Adaugati un cod postal de forma XXXXX-XXX." +msgstr "Adăugați un cod poștal de forma XXXXX-XXX." #: .\contrib\localflavor\br\forms.py:30 msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "Numerele de telefon trebuie să fie in format XXX-XXX-XXXX." +msgstr "Numerele de telefon trebuie să fie în format XXX-XXX-XXXX." #: .\contrib\localflavor\br\forms.py:58 msgid "Select a valid brazilian state. That state is not one of the available states." -msgstr "Selectati un stat brazilian valid. Acest stat nu se afla printre statele disponibile." +msgstr "Selectați un stat brazilian valid. Acest stat nu se află printre statele disponibile." #: .\contrib\localflavor\br\forms.py:94 msgid "Invalid CPF number." -msgstr "Numar CPF invalid." +msgstr "Număr CPF invalid." #: .\contrib\localflavor\br\forms.py:95 msgid "This field requires at most 11 digits or 14 characters." -msgstr "Acest camp are nevoie de cel mult 11 cifre sau 14 caractere." +msgstr "Acest câmp are nevoie de cel mult 11 cifre sau 14 caractere." #: .\contrib\localflavor\br\forms.py:134 msgid "Invalid CNPJ number." -msgstr "Numar CNPJ invalid." +msgstr "Număr CNPJ invalid." #: .\contrib\localflavor\br\forms.py:136 msgid "This field requires at least 14 digits" -msgstr "Acest camd are nevoie de cel putin 14 cifre." +msgstr "Acest câmp are nevoie de cel puțin 14 cifre." #: .\contrib\localflavor\ca\forms.py:17 msgid "Enter a postal code in the format XXX XXX." -msgstr "Introduceti un cod postal de forma XXX XXX." +msgstr "Introduceți un cod poștal de forma XXX XXX." #: .\contrib\localflavor\ca\forms.py:88 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "Introduceti un numar canadia de asigurare sociala valid de forma XXX-XXX-XXX." +msgstr "Introduceți un număr canadian de asigurare socială valid de forma XXX-XXX-XXX." #: .\contrib\localflavor\ch\ch_states.py:5 msgid "Aargau" @@ -1782,19 +1789,19 @@ #: .\contrib\localflavor\ch\forms.py:16 #: .\contrib\localflavor\no\forms.py:12 msgid "Enter a zip code in the format XXXX." -msgstr "Introduceti un cod postal de forma XXXX." +msgstr "Introduceți un cod poștal de forma XXXX." #: .\contrib\localflavor\ch\forms.py:64 msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." -msgstr "Introduceti un numar elvetian de identitate sau pasaport, valid, de forma X1234567<0 sau 1234567890." +msgstr "Introduceți un număr elvetian de identitate sau pașaport, valid, de forma X1234567<0 sau 1234567890." #: .\contrib\localflavor\cl\forms.py:29 msgid "Enter a valid Chilean RUT." -msgstr "Introduceti RUT chilian valid." +msgstr "Introduceți RUT chilian valid." #: .\contrib\localflavor\cl\forms.py:30 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "Introduceti un RUT chilian valid. Formatul este XX.XXX.XXX-X." +msgstr "Introduceți un RUT chilian valid. Formatul este XX.XXX.XXX-X." #: .\contrib\localflavor\cl\forms.py:31 msgid "The Chilean RUT is not valid." @@ -1868,11 +1875,11 @@ #: .\contrib\localflavor\fi\forms.py:12 #: .\contrib\localflavor\fr\forms.py:15 msgid "Enter a zip code in the format XXXXX." -msgstr "Introduceti un cod postal de forma XXXXX." +msgstr "Introduceți un cod poștal de forma XXXXX." #: .\contrib\localflavor\de\forms.py:41 msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." -msgstr "Introduceti un numar german de identitate valid, de forma XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." +msgstr "Introduceți un număr german de identitate valid, de forma XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: .\contrib\localflavor\es\es_provinces.py:5 msgid "Arava" @@ -2115,7 +2122,7 @@ #: .\contrib\localflavor\es\es_regions.py:13 msgid "Castile and Leon" -msgstr "Castilia si Leon" +msgstr "Castilia și Leon" #: .\contrib\localflavor\es\es_regions.py:14 msgid "Catalonia" @@ -2135,7 +2142,7 @@ #: .\contrib\localflavor\es\es_regions.py:20 msgid "Foral Community of Navarre" -msgstr "Comunitatea Forala Navara" +msgstr "Comunitatea Forală Navara" #: .\contrib\localflavor\es\es_regions.py:21 msgid "Valencian Community" @@ -2143,11 +2150,11 @@ #: .\contrib\localflavor\es\forms.py:19 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." -msgstr "Introduceti un cod postal valid in intervalul si de forma 01XXX - 52XXX." +msgstr "Introduceți un cod poștal valid în intervalul și de forma 01XXX - 52XXX." #: .\contrib\localflavor\es\forms.py:39 msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." -msgstr "Introduceti un numa de telefon valid intr-unul dintre formatele 6XXXXXXXX, 8XXXXXXXX sau 9XXXXXXXX." +msgstr "Introduceți un număr de telefon valid într-unul dintre formatele 6XXXXXXXX, 8XXXXXXXX sau 9XXXXXXXX." #: .\contrib\localflavor\es\forms.py:66 msgid "Please enter a valid NIF, NIE, or CIF." @@ -2155,59 +2162,59 @@ #: .\contrib\localflavor\es\forms.py:67 msgid "Please enter a valid NIF or NIE." -msgstr "Introduceti va rog un NIF sau NIE valid." +msgstr "Introduceți vă rog un NIF sau NIE valid." #: .\contrib\localflavor\es\forms.py:68 msgid "Invalid checksum for NIF." -msgstr "Suma de control invalda pentru NIF." +msgstr "Sumă de control invalidă pentru NIF." #: .\contrib\localflavor\es\forms.py:69 msgid "Invalid checksum for NIE." -msgstr "Suma de control invalida pentru NIE." +msgstr "Sumă de control invalidă pentru NIE." #: .\contrib\localflavor\es\forms.py:70 msgid "Invalid checksum for CIF." -msgstr "Suma de control invalida pentru CIF." +msgstr "Sumă de control invalidă pentru CIF." #: .\contrib\localflavor\es\forms.py:142 msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "Introduceti un numar de cont bancar valid de forma XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Introduceți un număr de cont bancar valid de forma XXXX-XXXX-XX-XXXXXXXXXX." #: .\contrib\localflavor\es\forms.py:143 msgid "Invalid checksum for bank account number." -msgstr "Suma de control invalida pentru numarul de cont bancar." +msgstr "Sumă de control invalidă pentru numărul de cont bancar." #: .\contrib\localflavor\fi\forms.py:28 msgid "Enter a valid Finnish social security number." -msgstr "Introduceti un numar finlandez de securitate sociala valid." +msgstr "Introduceți un număr finlandez de securitate socială valid." #: .\contrib\localflavor\in_\forms.py:14 msgid "Enter a zip code in the format XXXXXXX." -msgstr "Introduceti un cod postal de forma XXXXXXX." +msgstr "Introduceți un cod poștal de forma XXXXXXX." #: .\contrib\localflavor\is_\forms.py:17 msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "Introduceti un numa islandez de autentificare valid. Formatul este XXXXXX-XXXX." +msgstr "Introduceți un număr islandez de autentificare valid. Formatul este XXXXXX-XXXX." #: .\contrib\localflavor\is_\forms.py:18 msgid "The Icelandic identification number is not valid." -msgstr "Numarul islandez de identificare nu este valid." +msgstr "Numărul islandez de identificare nu este valid." #: .\contrib\localflavor\it\forms.py:14 msgid "Enter a valid zip code." -msgstr "Introduceti un cod postal valid." +msgstr "Introduceți un cod poștal valid." #: .\contrib\localflavor\it\forms.py:43 msgid "Enter a valid Social Security number." -msgstr "Introduceti un numar de securitate sociala valid." +msgstr "Introduceți un număr de securitate socială valid." #: .\contrib\localflavor\it\forms.py:68 msgid "Enter a valid VAT number." -msgstr "Introduceti un numar VAT valid." +msgstr "Introduceți un număr TVA valid." #: .\contrib\localflavor\jp\forms.py:17 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Introduceti un cod postal de forma XXXXXXX sau XXX-XXXX." +msgstr "Introduceți un cod poștal de forma XXXXXXX sau XXX-XXXX." #: .\contrib\localflavor\jp\jp_prefectures.py:4 msgid "Hokkaido" @@ -2527,15 +2534,15 @@ #: .\contrib\localflavor\nl\forms.py:21 msgid "Enter a valid postal code" -msgstr "Introduceti un cod postal valid" +msgstr "Introduceți un cod poștal valid" #: .\contrib\localflavor\nl\forms.py:52 msgid "Enter a valid phone number" -msgstr "Introduceţi un număr îde telefon valid" +msgstr "Introduceţi un număr de telefon valid" #: .\contrib\localflavor\nl\forms.py:78 msgid "Enter a valid SoFi number" -msgstr "Introduceti un numar SoFi valid" +msgstr "Introduceți un număr SoFi valid" #: .\contrib\localflavor\nl\nl_provinces.py:4 msgid "Drente" @@ -2587,47 +2594,47 @@ #: .\contrib\localflavor\no\forms.py:33 msgid "Enter a valid Norwegian social security number." -msgstr "Introduceti un numar norvegian de securitate sociala valid." +msgstr "Introduceți un număr norvegian de securitate socială valid." #: .\contrib\localflavor\pe\forms.py:24 msgid "This field requires 8 digits." -msgstr "Acest camp are nevoie de 8 cifre." +msgstr "Acest câmp are nevoie de 8 cifre." #: .\contrib\localflavor\pe\forms.py:52 msgid "This field requires 11 digits." -msgstr "Acest camp are nevoie de 11 cifre." +msgstr "Acest câmp are nevoie de 11 cifre." #: .\contrib\localflavor\pl\forms.py:39 msgid "National Identification Number consists of 11 digits." -msgstr "Numarul National de Identificare contine 11 cifre." +msgstr "Numărul Național de Identificare conține 11 cifre." #: .\contrib\localflavor\pl\forms.py:40 msgid "Wrong checksum for the National Identification Number." -msgstr "Suma de control gresita pentru Numarul National de Identificare." +msgstr "Sumă de control greșită pentru Numărul Național de Identificare." #: .\contrib\localflavor\pl\forms.py:72 msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "Introduceti un numar de taxa(NIP) de forma XXX-XXX-XX-XX sau XX-XX-XXX-XXX." +msgstr "Introduceți un număr de taxă(NIP) de forma XXX-XXX-XX-XX sau XX-XX-XXX-XXX." #: .\contrib\localflavor\pl\forms.py:73 msgid "Wrong checksum for the Tax Number (NIP)." -msgstr "Suma de control gresita pentru Numarul de Taxa (NIP)." +msgstr "Sumă de control greșită pentru Numărul de Taxa (NIP)." #: .\contrib\localflavor\pl\forms.py:112 msgid "National Business Register Number (REGON) consists of 7 or 9 digits." -msgstr "Numarul National din Registrul pentru Afaceri (REGON) contine 7 sau 9 cifre." +msgstr "Numărul National din Registrul pentru Afaceri (REGON) contine 7 sau 9 cifre." #: .\contrib\localflavor\pl\forms.py:113 msgid "Wrong checksum for the National Business Register Number (REGON)." -msgstr "Suma de control gresita pentru Numarul National din Registrul pentru Afaceri (REGON)." +msgstr "Suma de control gresita pentru Numărul National din Registrul pentru Afaceri (REGON)." #: .\contrib\localflavor\pl\forms.py:156 msgid "Enter a postal code in the format XX-XXX." -msgstr "Introduceti un cod postal de forma XX-XXX." +msgstr "Introduceți un cod poștal de forma XX-XXX." #: .\contrib\localflavor\pl\pl_voivodeships.py:8 msgid "Lower Silesia" -msgstr "Silezia Inferioara" +msgstr "Silezia Inferioară" #: .\contrib\localflavor\pl\pl_voivodeships.py:9 msgid "Kuyavia-Pomerania" @@ -2647,7 +2654,7 @@ #: .\contrib\localflavor\pl\pl_voivodeships.py:13 msgid "Lesser Poland" -msgstr "Polonia Mica" +msgstr "Polonia Mică" #: .\contrib\localflavor\pl\pl_voivodeships.py:14 msgid "Masovia" @@ -2687,11 +2694,11 @@ #: .\contrib\localflavor\pl\pl_voivodeships.py:23 msgid "West Pomerania" -msgstr "Pomerania Occidentala" +msgstr "Pomerania Occidentală" #: .\contrib\localflavor\sk\forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "Introduceti un cod postal de forma XXXXX or XXX XX." +msgstr "Introduceți un cod poștal de forma XXXXX or XXX XX." #: .\contrib\localflavor\sk\sk_districts.py:8 msgid "Banska Bystrica" @@ -3043,7 +3050,7 @@ #: .\contrib\localflavor\uk\forms.py:21 msgid "Enter a valid postcode." -msgstr "Introduceti un cod postal valid." +msgstr "Introduceți un cod poștal valid." #: .\contrib\localflavor\uk\uk_regions.py:11 msgid "Bedfordshire" @@ -3059,7 +3066,7 @@ #: .\contrib\localflavor\uk\uk_regions.py:15 msgid "Cornwall and Isles of Scilly" -msgstr "Cornwall si Insulele Scilly" +msgstr "Cornwall și Insulele Scilly" #: .\contrib\localflavor\uk\uk_regions.py:16 msgid "Cumbria" @@ -3179,7 +3186,7 @@ #: .\contrib\localflavor\uk\uk_regions.py:45 msgid "Tyne and Wear" -msgstr "Tyne si Wear" +msgstr "Tyne și Wear" #: .\contrib\localflavor\uk\uk_regions.py:46 msgid "Warwickshire" @@ -3271,7 +3278,7 @@ #: .\contrib\localflavor\uk\uk_regions.py:77 msgid "Dumfries and Galloway" -msgstr "Dumfries si Galloway" +msgstr "Dumfries și Galloway" #: .\contrib\localflavor\uk\uk_regions.py:78 msgid "Fife" @@ -3323,23 +3330,23 @@ #: .\contrib\localflavor\uk\uk_regions.py:93 msgid "Wales" -msgstr "Tara Galilor" +msgstr "Țara Galilor" #: .\contrib\localflavor\us\forms.py:16 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Introduceti un cod postal de forma XXXXX or XXXXX-XXXX." +msgstr "Introduceți un cod poștal de forma XXXXX or XXXXX-XXXX." #: .\contrib\localflavor\us\forms.py:54 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "Introduceti un numar SUA de Securitate Sociala de forma XXX-XX-XXXX format." +msgstr "Introduceți un număr SUA de Securitate Sociala de forma XXX-XX-XXXX format." #: .\contrib\localflavor\za\forms.py:20 msgid "Enter a valid South African ID number" -msgstr "Introduceti un ID sud african valid" +msgstr "Introduceți un ID sud african valid" #: .\contrib\localflavor\za\forms.py:54 msgid "Enter a valid South African postal code" -msgstr "Introduceti un cod postal sud african valid" +msgstr "Introduceți un cod poștal sud african valid" #: .\contrib\localflavor\za\za_provinces.py:4 msgid "Eastern Cape" @@ -3383,7 +3390,7 @@ #: .\contrib\redirects\models.py:8 msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Aceasta ar trebui să fie o cale absolută, excluzînd numele de domeniu. Exemplu: '/evenimente/cautare/'." +msgstr "Aceasta ar trebui să fie o cale absolută, excluzând numele de domeniu. Exemplu: '/evenimente/cautare/'." #: .\contrib\redirects\models.py:9 msgid "redirect to" @@ -3391,7 +3398,7 @@ #: .\contrib\redirects\models.py:10 msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Aceasta poate fi o cale absolută (ca mai sus) sau un URL începînd cu 'http://'." +msgstr "Aceasta poate fi o cale absolută (ca mai sus) sau un URL începând cu 'http://'." #: .\contrib\redirects\models.py:13 msgid "redirect" @@ -3443,7 +3450,7 @@ #: .\core\validators.py:76 msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Această valoare trebuie să conţină numai litere, numere, liniuţe de subliniere, slash-uri si dash-uri." +msgstr "Această valoare trebuie să conţină numai litere, numere, liniuţe de subliniere, slash-uri și dash-uri." #: .\core\validators.py:80 msgid "This value must contain only letters, numbers, underscores or hyphens." @@ -3451,11 +3458,11 @@ #: .\core\validators.py:84 msgid "Uppercase letters are not allowed here." -msgstr "Literele mari nu sînt permise aici." +msgstr "Literele mari nu sunt permise aici." #: .\core\validators.py:88 msgid "Lowercase letters are not allowed here." -msgstr "Literele mici nu sînt permise aici." +msgstr "Literele mici nu sunt permise aici." #: .\core\validators.py:95 msgid "Enter only digits separated by commas." @@ -3471,11 +3478,11 @@ #: .\core\validators.py:115 msgid "Empty values are not allowed here." -msgstr "Valorile vide nu sînt permise aici." +msgstr "Valorile vide nu sunt permise aici." #: .\core\validators.py:119 msgid "Non-numeric characters aren't allowed here." -msgstr "Caracterele ne-numerice nu sînt permise aici." +msgstr "Caracterele ne-numerice nu sunt permise aici." #: .\core\validators.py:123 msgid "This value can't be comprised solely of digits." @@ -3488,11 +3495,11 @@ #: .\core\validators.py:132 msgid "Only alphabetical characters are allowed here." -msgstr "Numai caractere alfabetice sînt permise aici." +msgstr "Numai caractere alfabetice sunt permise aici." #: .\core\validators.py:147 msgid "Year must be 1900 or later." -msgstr "Anul trebuie sa fie 1900 sau posterior." +msgstr "Anul trebuie să fie 1900 sau posterior." #: .\core\validators.py:151 #, python-format @@ -3502,7 +3509,7 @@ #: .\core\validators.py:156 #: .\db\models\fields\__init__.py:527 msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Introduceţi o dată validă in format: AAAA-LL-ZZ." +msgstr "Introduceţi o dată validă în format: AAAA-LL-ZZ." #: .\core\validators.py:161 msgid "Enter a valid time in HH:MM format." @@ -3537,7 +3544,7 @@ #: .\core\validators.py:204 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Numerele de telefon trebuie să fie in format XXX-XXX-XXXX. \"%s\" e invalid." +msgstr "Numerele de telefon trebuie să fie în format XXX-XXX-XXXX. \"%s\" e invalid." #: .\core\validators.py:212 #, python-format @@ -3554,7 +3561,7 @@ "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -"E necesar cod HTML valid. Erorile specifice sînt:\n" +"E necesar cod HTML valid. Erorile specifice sunt:\n" "%s" #: .\core\validators.py:237 @@ -3581,46 +3588,46 @@ #, 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] "Îngrijiţi-vă limbajul! Cuvîntul %s nu este permis aici." -msgstr[1] "Îngrijiţi-vă limbajul! Cuvintele %s nu sînt permise aici." +msgstr[0] "Îngrijiţi-vă limbajul! Cuvântul %s nu este permis aici." +msgstr[1] "Îngrijiţi-vă limbajul! Cuvintele %s nu sunt permise aici." #: .\core\validators.py:288 #, python-format msgid "This field must match the '%s' field." -msgstr "Acest camp trebuie sa fie identic cu '%s'." +msgstr "Acest câmp trebuie să fie identic cu '%s'." #: .\core\validators.py:307 msgid "Please enter something for at least one field." -msgstr "Va rog completati cel putin un camp." +msgstr "Vă rog completați cel puțin un câmp." #: .\core\validators.py:316 #: .\core\validators.py:327 msgid "Please enter both fields or leave them both empty." -msgstr "Vă rog comletaţi ambele cîmpuri sau lăsaţi-le goale pe ambele." +msgstr "Vă rog completaţi ambele câmpuri sau lăsaţi-le goale pe ambele." #: .\core\validators.py:335 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Acest cîmp e necesar dacă %(field)s este %(value)s" +msgstr "Acest câmp e necesar dacă %(field)s este %(value)s" #: .\core\validators.py:348 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Acest cîmp e necesar dacă %(field)s nu este %(value)s" +msgstr "Acest câmp e necesar dacă %(field)s nu este %(value)s" #: .\core\validators.py:367 msgid "Duplicate values are not allowed." -msgstr "Valorile duplicate nu sînt permise." +msgstr "Valorile duplicate nu sunt permise." #: .\core\validators.py:382 #, python-format msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Aceasta valoare trebuie sa fie cuprinsa intre %(lower)s si %(upper)s." +msgstr "Această valoare trebuie să fie cuprinsa între %(lower)s și %(upper)s." #: .\core\validators.py:384 #, python-format msgid "This value must be at least %s." -msgstr "Această valoare trebuie să fie cel putin %s." +msgstr "Această valoare trebuie să fie cel puțin %s." #: .\core\validators.py:386 #, python-format @@ -3647,8 +3654,8 @@ #, python-format msgid "Please enter a valid decimal number with a whole part of at most %s digit." msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." -msgstr[0] "Vă rog introduceţi un număr zecimal valid cu partea intreaga cel mult %s cifră." -msgstr[1] "Vă rog introduceţi un număr zecimal valid cu partea intreaga cel mult %s cifre." +msgstr[0] "Vă rog introduceţi un număr zecimal valid cu partea întreagă de cel mult %s cifră." +msgstr[1] "Vă rog introduceţi un număr zecimal valid cu partea întreagă de cel mult %s cifre." #: .\core\validators.py:450 #, python-format @@ -3659,12 +3666,12 @@ #: .\core\validators.py:458 msgid "Please enter a valid floating point number." -msgstr "Vă rog introduceţi un număr cu virgula valid." +msgstr "Vă rog introduceţi un număr cu virgulă valid." #: .\core\validators.py:467 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Asigură-te că fişierul încărcact are cel puţin %s octeţi." +msgstr "Asigură-te că fişierul încărcat are cel puţin %s octeţi." #: .\core\validators.py:468 #, python-format @@ -3673,11 +3680,11 @@ #: .\core\validators.py:485 msgid "The format for this field is wrong." -msgstr "Formatul acestui cîmp este invalid." +msgstr "Formatul acestui câmp este invalid." #: .\core\validators.py:500 msgid "This field is invalid." -msgstr "Cîmpul este invalid." +msgstr "Câmpul este invalid." #: .\core\validators.py:536 #, python-format @@ -3697,12 +3704,12 @@ #: .\core\validators.py:576 #, python-format msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" -msgstr "Textul începînd cu linia %(line)s nu e permis în acest context. (Linia începînd cu \"%(start)s\".)" +msgstr "Textul începând cu linia %(line)s nu e permis în acest context. (Linia începând cu \"%(start)s\".)" #: .\core\validators.py:581 #, python-format msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "\"%(attr)s\" în linia %(line)s e un atribut invalid. (Linia începînd cu \"%(start)s\".)" +msgstr "\"%(attr)s\" în linia %(line)s e un atribut invalid. (Linia începând cu \"%(start)s\".)" #: .\core\validators.py:586 #, python-format @@ -3722,12 +3729,12 @@ #: .\db\models\manipulators.py:308 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s de acest tip %(type)s exista deja pentru %(field)s dat." +msgstr "%(object)s de acest tip %(type)s există deja pentru %(field)s dat." #: .\db\models\fields\__init__.py:52 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s cu acest %(fieldname)s exista deja." +msgstr "%(optname)s cu acest %(fieldname)s există deja." #: .\db\models\fields\__init__.py:161 #: .\db\models\fields\__init__.py:327 @@ -3736,36 +3743,36 @@ #: .\newforms\fields.py:46 #: .\oldforms\__init__.py:374 msgid "This field is required." -msgstr "Campul acesta trebuie completat obligatoriu." +msgstr "Acest câmp este obligatoriu." #: .\db\models\fields\__init__.py:427 msgid "This value must be an integer." -msgstr "Această valoare trebuie să fie un numar intreg" +msgstr "Această valoare trebuie să fie un număr intreg." #: .\db\models\fields\__init__.py:466 msgid "This value must be either True or False." -msgstr "Această valoare trebuie să fie ori falsa ori adevarata" +msgstr "Această valoare trebuie să fie ori falsă ori adevarată." #: .\db\models\fields\__init__.py:490 msgid "This field cannot be null." -msgstr "Cîmpul nu poate fi gol" +msgstr "Câmpul nu poate fi gol" #: .\db\models\fields\__init__.py:668 msgid "This value must be a decimal number." -msgstr "Această valoare trebuie să fie un numar zecimal." +msgstr "Această valoare trebuie să fie un număr zecimal." #: .\db\models\fields\__init__.py:779 msgid "Enter a valid filename." -msgstr "Introduceti un nume de fisier valid." +msgstr "Introduceți un nume de fișier valid." #: .\db\models\fields\__init__.py:960 msgid "This value must be either None, True or False." -msgstr "Această valoare trebuie să fie falsa, adevarata sau nici una." +msgstr "Această valoare trebuie să fie falsă, adevarată sau nici una." #: .\db\models\fields\related.py:93 #, python-format msgid "Please enter a valid %s." -msgstr "Introduceti va rog un %s valid." +msgstr "Introduceți vă rog un %s valid." #: .\db\models\fields\related.py:701 msgid "Separate multiple IDs with commas." @@ -3773,42 +3780,42 @@ #: .\db\models\fields\related.py:703 msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr " Ţine apăsat \"Control\", sau \"Command\" pe un Mac, pentru a selectie multipla." +msgstr " Ţine apăsat \"Control\", sau \"Command\" pe un Mac, pentru selecție multiplă." #: .\db\models\fields\related.py:750 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Introduceti un ID valid pentru %(self)s. Valoarea %(value)r nu este valida." -msgstr[1] "Introduceti ID-uri valide pentru %(self)s. Valorile %(value)r nu sunt valide." +msgstr[0] "Introduceți un ID valid pentru %(self)s. Valoarea %(value)r nu este validă." +msgstr[1] "Introduceți ID-uri valide pentru %(self)s. Valorile %(value)r nu sunt valide." #: .\newforms\fields.py:47 msgid "Enter a valid value." -msgstr "Introduceti o valoare valida." +msgstr "Introduceți o valoare validă." #: .\newforms\fields.py:124 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Asigurati-va ca aceasta valoare are cel mult %(max)d caractere (are %(length)d)." +msgstr "Asigurați-vă că această valoare are cel mult %(max)d caractere (are %(length)d)." #: .\newforms\fields.py:125 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "Asigurati-va ca aceasta valoare are cel putin %(min)d caractere (are %(length)d)." +msgstr "Asigurați-vă că această valoare are cel puțin %(min)d caractere (are %(length)d)." #: .\newforms\fields.py:153 #: .\newforms\fields.py:182 #: .\newforms\fields.py:211 #, python-format msgid "Ensure this value is less than or equal to %s." -msgstr "Asigurati-va ca aceasta valoare este mai mica sau egala cu %s." +msgstr "Asigurați-vă că această valoare este mai mică sau egală cu %s." #: .\newforms\fields.py:154 #: .\newforms\fields.py:183 #: .\newforms\fields.py:212 #, python-format msgid "Ensure this value is greater than or equal to %s." -msgstr "Asigurati-va ca aceasta valoare este mai mare sau egala cu %s." +msgstr "Asigurați-vă că aceasta valoare este mai mare sau egală cu %s." #: .\newforms\fields.py:181 #: .\newforms\fields.py:210 @@ -3818,44 +3825,44 @@ #: .\newforms\fields.py:213 #, python-format msgid "Ensure that there are no more than %s digits in total." -msgstr "Asigurati-va ca nu exista mai mult de %s cifre in total." +msgstr "Asigurați-vă că nu exista mai mult de %s cifre în total." #: .\newforms\fields.py:214 #, python-format msgid "Ensure that there are no more than %s decimal places." -msgstr "Asigurati-va ca nu exista mai mult de %s spatii zecimale." +msgstr "Asigurați-vă că nu exista mai mult de %s spații zecimale." #: .\newforms\fields.py:215 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Asigurati-va ca nu exista mai mult de %s cifre inainte de virgula." +msgstr "Asigurați-vă că nu exista mai mult de %s cifre înainte de virgulă." #: .\newforms\fields.py:263 #: .\newforms\fields.py:751 msgid "Enter a valid date." -msgstr "Introduceti o data valida." +msgstr "Introduceți o dată validă." #: .\newforms\fields.py:296 #: .\newforms\fields.py:752 msgid "Enter a valid time." -msgstr "Introduceti o ora valida." +msgstr "Introduceți o oră validă." #: .\newforms\fields.py:335 msgid "Enter a valid date/time." -msgstr "Introduceti o data/ora valida." +msgstr "Introduceți o dată/oră validă." #: .\newforms\fields.py:434 msgid "No file was submitted." -msgstr "Nici un fisier nu a fost trimis." +msgstr "Nici un fișier nu a fost trimis." #: .\newforms\fields.py:435 #: .\oldforms\__init__.py:689 msgid "The submitted file is empty." -msgstr "Fisierul uploadat este gol" +msgstr "Fișierul uploadat este gol" #: .\newforms\fields.py:497 msgid "Enter a valid URL." -msgstr "Introduceti un URL valid." +msgstr "Introduceți un URL valid." #: .\newforms\fields.py:498 msgid "This URL appears to be a broken link." @@ -3864,49 +3871,49 @@ #: .\newforms\fields.py:560 #: .\newforms\models.py:299 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Selectati o optiune valida. Aceasta optiune nu face parte din optiunile disponibile." +msgstr "Selectați o opțiune validă. Această opțiune nu face parte din opțiunile disponibile." #: .\newforms\fields.py:599 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." -msgstr "Selectati o optiune valida. %(value)s nu face parte din optiunile disponibile." +msgstr "Selectați o opțiune validă. %(value)s nu face parte din opțiunile disponibile." #: .\newforms\fields.py:600 #: .\newforms\fields.py:662 #: .\newforms\models.py:371 msgid "Enter a list of values." -msgstr "Introduceti o lista de valori." +msgstr "Introduceți o listă de valori." #: .\newforms\fields.py:780 msgid "Enter a valid IPv4 address." -msgstr "Introduceţi o adresă IPv4 valida." +msgstr "Introduceţi o adresă IPv4 validă." #: .\newforms\models.py:372 #, python-format msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Selectati o optiune valida. %s nu face parte din optiunile disponibile." +msgstr "Selectați o opțiune validă. %s nu face parte din opțiunile disponibile." #: .\oldforms\__init__.py:409 #, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Asigurati-va ca textul dumneavoastra are mai putin de %s caracter." -msgstr[1] "Asigurati-va ca textul dumneavoastra are mai putin de %s caractere." +msgstr[0] "Asigurați-va că textul dumneavoastră are mai puțin de %s caracter." +msgstr[1] "Asigurați-va că textul dumneavoastră are mai puțin de %s caractere." #: .\oldforms\__init__.py:414 msgid "Line breaks are not allowed here." -msgstr "Randurile noi nu sînt permise aici." +msgstr "Randurile noi nu sunt permise aici." #: .\oldforms\__init__.py:512 #: .\oldforms\__init__.py:586 #: .\oldforms\__init__.py:625 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Selectati o optiune valida. '%(data)s' nu face parte din %(choices)s." +msgstr "Selectați o opțiune validă. '%(data)s' nu face parte din %(choices)s." #: .\oldforms\__init__.py:745 msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Introduceţi un număr întreg cu valoare intre -32,768 si 32,767." +msgstr "Introduceţi un număr întreg cu valoare intre -32,768 și 32,767." #: .\oldforms\__init__.py:755 msgid "Enter a positive number." @@ -3914,7 +3921,7 @@ #: .\oldforms\__init__.py:765 msgid "Enter a whole number between 0 and 32,767." -msgstr "Introduceţi un număr întreg cu valoare intre 0 si 32,767." +msgstr "Introduceţi un număr întreg cu valoare intre 0 și 32,767." #: .\template\defaultfilters.py:698 msgid "yes,no,maybe" @@ -3960,11 +3967,11 @@ #: .\utils\dateformat.py:97 msgid "midnight" -msgstr "miezul noptii" +msgstr "miezul nopții" #: .\utils\dateformat.py:99 msgid "noon" -msgstr "amiaza" +msgstr "amiază" #: .\utils\dates.py:6 msgid "Monday" @@ -3988,7 +3995,7 @@ #: .\utils\dates.py:7 msgid "Saturday" -msgstr "Sîmbătă" +msgstr "Sâmbătă" #: .\utils\dates.py:7 msgid "Sunday" @@ -4016,7 +4023,7 @@ #: .\utils\dates.py:11 msgid "Sat" -msgstr "Sam" +msgstr "Sâm" #: .\utils\dates.py:11 msgid "Sun" @@ -4164,14 +4171,14 @@ #: .\utils\timesince.py:22 msgid "month" msgid_plural "months" -msgstr[0] "luna" +msgstr[0] "lună" msgstr[1] "luni" #: .\utils\timesince.py:23 msgid "week" msgid_plural "weeks" -msgstr[0] "saptamana" -msgstr[1] "saptamani" +msgstr[0] "săptămână" +msgstr[1] "săptămâni" #: .\utils\timesince.py:24 msgid "day" @@ -4182,7 +4189,7 @@ #: .\utils\timesince.py:25 msgid "hour" msgid_plural "hours" -msgstr[0] "ora" +msgstr[0] "oră" msgstr[1] "ore" #: .\utils\timesince.py:26 @@ -4238,7 +4245,7 @@ #: .\views\generic\create_update.py:184 #, python-format msgid "The %(verbose_name)s was deleted." -msgstr "%(verbose_name)s a fost sters." +msgstr "%(verbose_name)s a fost șters." #~ msgid "Have you forgotten your password?" #~ msgstr "Ai uitat parola?" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ro/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ro/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ro/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = 'j F Y, H:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd.m.Y' +SHORT_DATETIME_FORMAT = 'd.m.Y, H:i:s' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ru/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/ru/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ru/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/ru/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/ru/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -770,7 +770,7 @@ #, python-format msgid "1 result" msgid_plural "%(counter)s results" -msgstr[0] "1 результат" +msgstr[0] "%(counter)s результат" msgstr[1] "%(counter)s результата" msgstr[2] "%(counter)s результатов" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ru/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ru/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ru/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y г.' +TIME_FORMAT = 'G:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd.m.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sk/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/sk/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sk/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/sk/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/sk/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-20 20:16+0100\n" -"PO-Revision-Date: 2009-03-18 19:18+0100\n" +"POT-Creation-Date: 2009-09-17 11:59+0200\n" +"PO-Revision-Date: 2009-09-17 12:25+0100\n" "Last-Translator: Marian Andre \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" @@ -218,6 +218,21 @@ msgid "Traditional Chinese" msgstr "čínsky (tradične)" +#: contrib/admin/actions.py:60 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "Úspešne zmazaných %(count)d %(items)s." + +#: contrib/admin/actions.py:67 +#: contrib/admin/options.py:1027 +msgid "Are you sure?" +msgstr "Ste si istý?" + +#: contrib/admin/actions.py:85 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Zmazať označené %(verbose_name_plural)s" + #: contrib/admin/filterspecs.py:44 #, python-format msgid "" @@ -227,43 +242,52 @@ "

                                    Od %s:

                                    \n" "
                                      \n" -#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:91 -#: contrib/admin/filterspecs.py:146 contrib/admin/filterspecs.py:172 +#: contrib/admin/filterspecs.py:75 +#: contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 +#: contrib/admin/filterspecs.py:173 msgid "All" msgstr "Všetko" -#: contrib/admin/filterspecs.py:112 +#: contrib/admin/filterspecs.py:113 msgid "Any date" msgstr "Ľubovoľný dátum" -#: contrib/admin/filterspecs.py:113 +#: contrib/admin/filterspecs.py:114 msgid "Today" msgstr "Dnes" -#: contrib/admin/filterspecs.py:116 +#: contrib/admin/filterspecs.py:117 msgid "Past 7 days" msgstr "Posledných 7 dní" -#: contrib/admin/filterspecs.py:118 +#: contrib/admin/filterspecs.py:119 msgid "This month" msgstr "Tento mesiac" -#: contrib/admin/filterspecs.py:120 +#: contrib/admin/filterspecs.py:121 msgid "This year" msgstr "Tento rok" -#: contrib/admin/filterspecs.py:146 forms/widgets.py:390 +#: contrib/admin/filterspecs.py:147 +#: forms/widgets.py:435 msgid "Yes" msgstr "Áno" -#: contrib/admin/filterspecs.py:146 forms/widgets.py:390 +#: contrib/admin/filterspecs.py:147 +#: forms/widgets.py:435 msgid "No" msgstr "Nie" -#: contrib/admin/filterspecs.py:153 forms/widgets.py:390 +#: contrib/admin/filterspecs.py:154 +#: forms/widgets.py:435 msgid "Unknown" msgstr "Neznámy" +#: contrib/admin/helpers.py:14 +msgid "Action:" +msgstr "Akcia:" + #: contrib/admin/models.py:19 msgid "action time" msgstr "čas udalosti" @@ -292,87 +316,92 @@ msgid "log entries" msgstr "položky záznamu" -#: contrib/admin/options.py:130 contrib/admin/options.py:144 +#: contrib/admin/options.py:133 +#: contrib/admin/options.py:147 msgid "None" msgstr "Žiadne" -#: contrib/admin/options.py:400 +#: contrib/admin/options.py:519 #, python-format msgid "Changed %s." msgstr "Zmenené %s." -#: contrib/admin/options.py:400 contrib/admin/options.py:410 -#: contrib/comments/templates/comments/preview.html:15 forms/models.py:296 +#: contrib/admin/options.py:519 +#: contrib/admin/options.py:529 +#: contrib/comments/templates/comments/preview.html:16 +#: forms/models.py:388 +#: forms/models.py:600 msgid "and" msgstr "a" -#: contrib/admin/options.py:405 +#: contrib/admin/options.py:524 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "Pridaný %(name)s \"%(object)s\"." -#: contrib/admin/options.py:409 +#: contrib/admin/options.py:528 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "Zmenený %(list)s pre %(name)s \"%(object)s\"." -#: contrib/admin/options.py:414 +#: contrib/admin/options.py:533 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "Zmazaný %(name)s \"%(object)s\"." -#: contrib/admin/options.py:418 +#: contrib/admin/options.py:537 msgid "No fields changed." msgstr "Polia nezmenené." -#: contrib/admin/options.py:479 contrib/auth/admin.py:67 +#: contrib/admin/options.py:599 +#: contrib/auth/admin.py:67 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne pridaný." -#: contrib/admin/options.py:483 contrib/admin/options.py:516 +#: contrib/admin/options.py:603 +#: contrib/admin/options.py:636 #: contrib/auth/admin.py:75 msgid "You may edit it again below." msgstr "Nižšie to môžete znova upraviť." -#: contrib/admin/options.py:493 contrib/admin/options.py:526 +#: contrib/admin/options.py:613 +#: contrib/admin/options.py:646 #, python-format msgid "You may add another %s below." msgstr "Nižšie môžete pridať ďalšie %s." -#: contrib/admin/options.py:514 +#: contrib/admin/options.py:634 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne zmenený." -#: contrib/admin/options.py:522 +#: contrib/admin/options.py:642 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"Objekt %(name)s \"%(obj)s\" bol úspešne pridaný. Ďalšie zmeny môžete urobiť " -"nižšie." - -#: contrib/admin/options.py:601 +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne pridaný. Ďalšie zmeny môžete urobiť nižšie." + +#: contrib/admin/options.py:773 #, python-format msgid "Add %s" msgstr "Pridať %s" -#: contrib/admin/options.py:632 contrib/admin/options.py:802 +#: contrib/admin/options.py:804 +#: contrib/admin/options.py:1005 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Objekt %(name)s s primárnym kľúčom %(key)r neexistuje." -#: contrib/admin/options.py:689 +#: contrib/admin/options.py:861 #, python-format msgid "Change %s" msgstr "Zmeniť %s" -#: contrib/admin/options.py:721 +#: contrib/admin/options.py:905 msgid "Database error" msgstr "Chyba databázy" -#: contrib/admin/options.py:749 +#: contrib/admin/options.py:941 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." @@ -380,99 +409,91 @@ msgstr[1] "%(count)s %(name)s bol úspešne zmenený." msgstr[2] "%(count)s %(name)s boli úspešne zmenené." -#: contrib/admin/options.py:817 +#: contrib/admin/options.py:1020 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne vymazaný." -#: contrib/admin/options.py:824 -msgid "Are you sure?" -msgstr "Ste si istý?" - -#: contrib/admin/options.py:853 +#: contrib/admin/options.py:1057 #, python-format msgid "Change history: %s" msgstr "Zmeniť históriu: %s" -#: contrib/admin/sites.py:15 contrib/admin/views/decorators.py:14 +#: contrib/admin/sites.py:21 +#: contrib/admin/views/decorators.py:14 #: contrib/auth/forms.py:80 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Prosím, zadajte správne používateľské meno a heslo. Rešpektujte malé a veľké " -"písmená." - -#: contrib/admin/sites.py:243 contrib/admin/views/decorators.py:40 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "Prosím, zadajte správne používateľské meno a heslo. Rešpektujte malé a veľké písmená." + +#: contrib/admin/sites.py:285 +#: contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Vaše prihlásenie vypršalo. Prosím, prihláste sa znovu." -#: contrib/admin/sites.py:250 contrib/admin/views/decorators.py:47 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Zdá sa, že váš prehliadač nemá povolené cookies. Prosím, povoľte cookies, " -"znova načítajte túto stránku a skúste to znova." - -#: contrib/admin/sites.py:266 contrib/admin/sites.py:272 +#: contrib/admin/sites.py:292 +#: contrib/admin/views/decorators.py:47 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "Zdá sa, že váš prehliadač nemá povolené cookies. Prosím, povoľte cookies, znova načítajte túto stránku a skúste to znova." + +#: contrib/admin/sites.py:308 +#: contrib/admin/sites.py:314 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Používateľské mená nemožu obsahovať znak '@'." -#: contrib/admin/sites.py:269 contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:311 +#: contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"Vaša e-mail adresa nie je vašim používateľským menom. Skúste namiesto toho " -"použiť '%s'." - -#: contrib/admin/sites.py:329 +msgstr "Vaša e-mail adresa nie je vašim používateľským menom. Skúste namiesto toho použiť '%s'." + +#: contrib/admin/sites.py:367 msgid "Site administration" msgstr "Správa stránky" -#: contrib/admin/sites.py:342 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:381 +#: contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Prihlásenie" -#: contrib/admin/sites.py:389 +#: contrib/admin/sites.py:426 #, python-format msgid "%s administration" msgstr "%s správa" -#: contrib/admin/util.py:144 +#: contrib/admin/util.py:168 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Jeden alebo viac %(fieldname)s v %(name)s: %(obj)s" -#: contrib/admin/util.py:149 +#: contrib/admin/util.py:173 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "Jeden alebo viac %(fieldname)s v %(name)s:" -#: contrib/admin/widgets.py:70 +#: contrib/admin/widgets.py:72 msgid "Date:" msgstr "Dátum:" -#: contrib/admin/widgets.py:70 +#: contrib/admin/widgets.py:72 msgid "Time:" msgstr "Čas:" -#: contrib/admin/widgets.py:94 +#: contrib/admin/widgets.py:96 msgid "Currently:" msgstr "Aktuálne:" -#: contrib/admin/widgets.py:94 +#: contrib/admin/widgets.py:96 msgid "Change:" msgstr "Zmeniť:" -#: contrib/admin/widgets.py:123 +#: contrib/admin/widgets.py:125 msgid "Lookup" msgstr "Vyhľadanie" -#: contrib/admin/widgets.py:230 +#: contrib/admin/widgets.py:237 msgid "Add Another" msgstr "Pridať ďalší" @@ -487,10 +508,11 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:33 +#: contrib/admin/templates/admin/base.html:54 #: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:20 +#: contrib/admin/templates/admin/change_list.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 #: contrib/admin/templates/admin/auth/user/change_password.html:10 @@ -518,12 +540,16 @@ 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 "" -"Vyskytla sa chyba. Bola oznámená správcovi stránky e-mailom a mala by byť " -"čoskoro opravená.Ďakujeme za pochopenie." +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 "Vyskytla sa chyba. Bola oznámená správcovi stránky e-mailom a mala by byť čoskoro opravená.Ďakujeme za pochopenie." + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "Spustiť označenú akciu" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Ísť" #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 @@ -531,26 +557,26 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/base.html:27 msgid "Welcome," msgstr "Vitajte," -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/base.html:32 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentácia" -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/auth/user/change_password.html:13 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:14 +#: contrib/admin/templates/admin/auth/user/change_password.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 msgid "Change password" msgstr "Zmeniť heslo" -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/base.html:47 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 msgid "Log out" @@ -576,57 +602,63 @@ #: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:27 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Pozrieť na stránke" #: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/change_list.html:49 -#: contrib/admin/templates/admin/auth/user/change_password.html:22 +#: contrib/admin/templates/admin/change_list.html:54 +#: contrib/admin/templates/admin/auth/user/change_password.html:23 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Prosím, opravte chyby uvedené nižšie." msgstr[1] "Prosím, opravte chybu uvedenú nižšie." msgstr[2] "Prosím, opravte chyby uvedené nižšie." -#: contrib/admin/templates/admin/change_list.html:41 +#: contrib/admin/templates/admin/change_list.html:46 #, python-format msgid "Add %(name)s" msgstr "Pridať %(name)s" -#: contrib/admin/templates/admin/change_list.html:60 +#: contrib/admin/templates/admin/change_list.html:65 msgid "Filter" msgstr "Filtrovať" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:251 +#: contrib/admin/templates/admin/submit_line.html:4 +#: forms/formsets.py:275 msgid "Delete" msgstr "Odstrániť" #: contrib/admin/templates/admin/delete_confirmation.html:16 #, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Odstránenie objektu %(object_name)s '%(escaped_object)s' by malo za následok " -"aj odstránenie súvisiacich objektov, avšak váš účet nemá oprávnenie na " -"odstránenie nasledujúcich typov objektov:" +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Odstránenie objektu %(object_name)s '%(escaped_object)s' by malo za následok aj odstránenie súvisiacich objektov, avšak váš účet nemá oprávnenie na odstránenie nasledujúcich typov objektov:" #: contrib/admin/templates/admin/delete_confirmation.html:23 #, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"Ste si istý, že chcete odstrániť objekt %(object_name)s \"%(escaped_object)s" -"\"? Všetky nasledujúce súvisiace objekty budú odstránené:" +msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:" +msgstr "Ste si istý, že chcete odstrániť objekt %(object_name)s \"%(escaped_object)s\"? Všetky nasledujúce súvisiace objekty budú odstránené:" #: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 msgid "Yes, I'm sure" msgstr "Áno, som si istý" +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "Zmazať viacero objektov" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "Deleting the %(object_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Odstránenie objektu %(object_name)s by malo za následok aj odstránenie súvisiacich objektov, avšak váš účet nemá oprávnenie na odstránenie nasledujúcich typov objektov:" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "Are you sure you want to delete the selected %(object_name)s objects? All of the following objects and their related items will be deleted:" +msgstr "Ste si istý, že chcete odstrániť objekty %(object_name)s? Budú odstránené nasledujúce objekty a položky s nimi súvisiace:" + #: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(filter_title)s " @@ -657,15 +689,13 @@ msgid "None available" msgstr "Nedostupné" +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "Neznámy obsah" + #: contrib/admin/templates/admin/invalid_setup.html:7 -msgid "" -"Something's wrong with your database installation. Make sure the appropriate " -"database tables have been created, and make sure the database is readable by " -"the appropriate user." -msgstr "" -"Niečo nie je v poriadku s vašou inštaláciou databázy. Uistite sa, že boli " -"vytvorené potrebné databázové tabuľky a taktiež skontrolujte, či príslušný " -"používateľ môže databázu čítať." +msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." +msgstr "Niečo nie je v poriadku s vašou inštaláciou databázy. Uistite sa, že boli vytvorené potrebné databázové tabuľky a taktiež skontrolujte, či príslušný používateľ môže databázu čítať." #: contrib/admin/templates/admin/login.html:19 msgid "Username:" @@ -694,20 +724,21 @@ msgstr "j. F Y o G:i" #: contrib/admin/templates/admin/object_history.html:38 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Tento objekt nemá históriu zmien. Pravdepodobne nebol pridaný " -"prostredníctvom tejto správcovskej stránky." +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Tento objekt nemá históriu zmien. Pravdepodobne nebol pridaný prostredníctvom tejto správcovskej stránky." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "Zobraziť všetky" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Uložiť" + #: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Ísť" +msgid "Search" +msgstr "Vyhľadávanie" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -722,10 +753,6 @@ msgid "%(full_result_count)s total" msgstr "%(full_result_count)s spolu" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Uložiť" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Uložiť ako nový" @@ -739,36 +766,36 @@ msgstr "Uložiť a pokračovať v úpravách" #: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "" -"Najskôr zadajte používateľské meno a heslo. Potom budete môcť upraviť viac " -"používateľských nastavení." +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "Najskôr zadajte používateľské meno a heslo. Potom budete môcť upraviť viac používateľských nastavení." #: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59 +#: contrib/auth/forms.py:14 +#: contrib/auth/forms.py:47 +#: contrib/auth/forms.py:59 msgid "Username" msgstr "Používateľské meno" #: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:33 -#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:60 +#: contrib/auth/forms.py:185 msgid "Password" msgstr "Heslo" #: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 #: contrib/auth/forms.py:186 msgid "Password (again)" msgstr "Heslo (znova)" #: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:41 msgid "Enter the same password as above, for verification." msgstr "Kvôli overeniu zadajte rovnaké heslo ako vyššie." -#: contrib/admin/templates/admin/auth/user/change_password.html:26 +#: contrib/admin/templates/admin/auth/user/change_password.html:27 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "Zadajte nové heslo pre používateľa %(username)s." @@ -802,12 +829,8 @@ 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 "" -"Z bezpečnostných dôvodov zadajte staré heslo a potom nové heslo dvakrát, aby " -"sme mohli overiť, že ste ho zadali správne." +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 "Z bezpečnostných dôvodov zadajte staré heslo a potom nové heslo dvakrát, aby sme mohli overiť, že ste ho zadali správne." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -855,23 +878,16 @@ msgstr "Zadajte nové heslo" #: contrib/admin/templates/registration/password_reset_confirm.html:14 -msgid "" -"Please enter your new password twice so we can verify you typed it in " -"correctly." -msgstr "" -"Zadajte nové heslo dvakrát, aby sme mohli overiť, že ste ho zadali správne." +msgid "Please enter your new password twice so we can verify you typed it in correctly." +msgstr "Zadajte nové heslo dvakrát, aby sme mohli overiť, že ste ho zadali správne." #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Obnova hesla sa nepodarila" #: contrib/admin/templates/registration/password_reset_confirm.html:28 -msgid "" -"The password reset link was invalid, possibly because it has already been " -"used. Please request a new password reset." -msgstr "" -"Odkaz na obnovenie hesla je neplatný, pretože pravdepodobne už bol raz " -"použitý. Požiadajte znovu o obnovu hesla, prosím." +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "Odkaz na obnovenie hesla je neplatný, pretože pravdepodobne už bol raz použitý. Požiadajte znovu o obnovu hesla, prosím." #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 @@ -879,17 +895,12 @@ msgstr "Obnovenie hesla úspešné" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed you instructions for setting your password to the e-mail " -"address you submitted. You should be receiving it shortly." -msgstr "" -"Poslali sme vám e-mailom návod na nastavenie vášho hesla na mailovú adresu, " -"ktorú ste zadali.Mali by ste ho zakrátko dostať." +msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Poslali sme vám e-mailom návod na nastavenie vášho hesla na mailovú adresu, ktorú ste zadali.Mali by ste ho zakrátko dostať." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" -"Dostávate túto elektronickú poštu, pretože ste si vyžiadali obnovenie hesla." +msgstr "Dostávate túto elektronickú poštu, pretože ste si vyžiadali obnovenie hesla." #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -914,12 +925,8 @@ 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 e-mail " -"instructions for setting a new one." -msgstr "" -"Zabudli ste svoje heslo? Zadajte svoju e-mail adresu a my Vám pošleme " -"inštrukcie pre nastavenie nového." +msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." +msgstr "Zabudli ste svoje heslo? Zadajte svoju e-mail adresu a my Vám pošleme inštrukcie pre nastavenie nového." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -943,7 +950,8 @@ msgid "Select %s to change" msgstr "Vybrať \"%s\" na úpravu" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:37 +#: contrib/sites/models.py:38 msgid "site" msgstr "stránka" @@ -951,144 +959,162 @@ msgid "template" msgstr "šablóna" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 +#: contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "značka:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 +#: contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filter:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 +#: contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "pohľad:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Aplikácia %r nenájdená" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Model %(model_name)r sa nenachádza v aplikácii %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "súvisiaci objekt `%(app_label)s.%(data_type)s`" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 +#: contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 +#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 +#: contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 +#: contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "súvisiace objekty `%(app_label)s.%(object_name)s`" -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "všetky %s" -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 +#: contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "počet %s" -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Polia objektov %s" -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 +#: contrib/admindocs/views.py:334 +#: contrib/admindocs/views.py:345 +#: contrib/admindocs/views.py:347 +#: contrib/admindocs/views.py:353 +#: contrib/admindocs/views.py:354 +#: contrib/admindocs/views.py:356 msgid "Integer" msgstr "Celé číslo" -#: contrib/admindocs/views.py:316 +#: contrib/admindocs/views.py:335 msgid "Boolean (Either True or False)" msgstr "Logická hodnota (buď True alebo False)" -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 +#: contrib/admindocs/views.py:336 +#: contrib/admindocs/views.py:355 #, python-format msgid "String (up to %(max_length)s)" msgstr "Reťazec (až do %(max_length)s)" -#: contrib/admindocs/views.py:318 +#: contrib/admindocs/views.py:337 msgid "Comma-separated integers" msgstr "Celé čísla oddelené čiarkou" -#: contrib/admindocs/views.py:319 +#: contrib/admindocs/views.py:338 msgid "Date (without time)" msgstr "Dátum (bez času)" -#: contrib/admindocs/views.py:320 +#: contrib/admindocs/views.py:339 msgid "Date (with time)" msgstr "Dátum (a čas)" -#: contrib/admindocs/views.py:321 +#: contrib/admindocs/views.py:340 msgid "Decimal number" msgstr "Desatinné číslo" -#: contrib/admindocs/views.py:322 +#: contrib/admindocs/views.py:341 msgid "E-mail address" msgstr "E-mail adresa" -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 +#: contrib/admindocs/views.py:342 +#: contrib/admindocs/views.py:343 +#: contrib/admindocs/views.py:346 msgid "File path" msgstr "Cesta k súboru" -#: contrib/admindocs/views.py:325 +#: contrib/admindocs/views.py:344 msgid "Floating point number" msgstr "Číslo s plávajúcou desatinnou čiarkou" -#: contrib/admindocs/views.py:329 contrib/comments/models.py:58 +#: contrib/admindocs/views.py:348 +#: contrib/comments/models.py:60 msgid "IP address" msgstr "IP adresa" -#: contrib/admindocs/views.py:331 +#: contrib/admindocs/views.py:350 msgid "Boolean (Either True, False or None)" msgstr "Logická hodnota (buď True, False alebo None)" -#: contrib/admindocs/views.py:332 +#: contrib/admindocs/views.py:351 msgid "Relation to parent model" msgstr "Vzťah k nadradenému modelu" -#: contrib/admindocs/views.py:333 +#: contrib/admindocs/views.py:352 msgid "Phone number" msgstr "Telefónne číslo" -#: contrib/admindocs/views.py:338 +#: contrib/admindocs/views.py:357 msgid "Text" msgstr "Text" -#: contrib/admindocs/views.py:339 +#: contrib/admindocs/views.py:358 msgid "Time" msgstr "Čas" -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:19 +#: contrib/admindocs/views.py:359 +#: contrib/comments/forms.py:95 #: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 +#: contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admindocs/views.py:341 +#: contrib/admindocs/views.py:360 msgid "U.S. state (two uppercase letters)" msgstr "Štát USA (dve veľké písmená)" -#: contrib/admindocs/views.py:342 +#: contrib/admindocs/views.py:361 msgid "XML text" msgstr "XML text" -#: contrib/admindocs/views.py:368 +#: contrib/admindocs/views.py:387 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s nevyzerá ako urlpattern objekt" @@ -1113,36 +1139,24 @@ msgstr "" "\n" "

                                      Ak chete nainštalovať záložky, pretiahnite odkaz do\n" -"nástrojovej lišty so záložkami, alebo kliknite pravým tlačidlom myši na " -"odkaz a pridajte ho do záložiek.\n" -"Následne môžete záložky použiť na stránkach. Poznamenávame, že použitie " -"niektorých záložiek vyžaduje, aby bol váš počítač \"interný\" (ak si nie ste " -"istý, že váš počítač je \"interný\", oslovte svojho systémového správcu).\n" +"nástrojovej lišty so záložkami, alebo kliknite pravým tlačidlom myši na odkaz a pridajte ho do záložiek.\n" +"Následne môžete záložky použiť na stránkach. Poznamenávame, že použitie niektorých záložiek vyžaduje, aby bol váš počítač \"interný\" (ak si nie ste istý, že váš počítač je \"interný\", oslovte svojho systémového správcu).

                                      \n" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 msgid "Documentation for this page" msgstr "Dokumentácia k tejto stránke" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" -"Nasmeruje vás z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa " -"táto stránka generuje." +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "Nasmeruje vás z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa táto stránka generuje." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 msgid "Show object ID" msgstr "Zobraziť identifikátor objektu" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Zobrazí content-type a jedinečný identifikátor pre stránky, ktoré " -"reprezentujú samostatný objekt." +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Zobrazí content-type a jedinečný identifikátor pre stránky, ktoré reprezentujú samostatný objekt." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" @@ -1150,8 +1164,7 @@ #: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Skočí na stránku správy pre stránky, ktoré reprezentujú samostatný objekt." +msgstr "Skočí na stránku správy pre stránky, ktoré reprezentujú samostatný objekt." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 msgid "Edit this object (new window)" @@ -1190,16 +1203,14 @@ msgid "Change password: %s" msgstr "Zmeniť heslo: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:127 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Povinné. 30 znakov alebo menej. Len alfanumerické znaky (písmená, čísla a " -"podčiarkovníky)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 +#: contrib/auth/forms.py:15 +#: contrib/auth/forms.py:48 +#: contrib/auth/models.py:128 +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." +msgstr "Povinné. 30 znakov alebo menej. Len alfanumerické znaky (písmená, čísla a podčiarkovníky)." + +#: contrib/auth/forms.py:16 +#: contrib/auth/forms.py:49 msgid "This value must contain only letters, numbers and underscores." msgstr "Táto hodnota môže obsahovať len písmená, číslice a podčiarkovníky." @@ -1211,7 +1222,8 @@ msgid "A user with that username already exists." msgstr "Používateľ s takým používateľským menom už existuje." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 +#: contrib/auth/forms.py:36 +#: contrib/auth/forms.py:155 #: contrib/auth/forms.py:197 msgid "The two password fields didn't match." msgstr "Pole hesla a jeho potvrdenie sa nezhodujú." @@ -1221,23 +1233,16 @@ msgstr "Tento účet je neaktívny." #: contrib/auth/forms.py:87 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre prihlásenie." +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre prihlásenie." #: contrib/auth/forms.py:100 msgid "E-mail" msgstr "E-mail" #: contrib/auth/forms.py:109 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" -"Táto e-mail adresa nemá priradený žiadny používateľský účet. Ste si istý, že " -"ste sa zaregistrovali?" +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "Táto e-mail adresa nemá priradený žiadny používateľský účet. Ste si istý, že ste sa zaregistrovali?" #: contrib/auth/forms.py:135 #, python-format @@ -1260,7 +1265,8 @@ msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Nezadali ste správne svoje staré heslo. Napíšte ho znovu, prosím." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:63 +#: contrib/auth/models.py:86 msgid "name" msgstr "meno" @@ -1272,7 +1278,8 @@ msgid "permission" msgstr "oprávnenie" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:69 +#: contrib/auth/models.py:87 msgid "permissions" msgstr "oprávnenia" @@ -1280,106 +1287,95 @@ msgid "group" msgstr "skupina" -#: contrib/auth/models.py:91 contrib/auth/models.py:137 +#: contrib/auth/models.py:91 +#: contrib/auth/models.py:138 msgid "groups" msgstr "skupiny" -#: contrib/auth/models.py:127 -msgid "username" -msgstr "používateľské meno" - #: contrib/auth/models.py:128 -msgid "first name" -msgstr "krstné meno" +msgid "username" +msgstr "používateľské meno" #: contrib/auth/models.py:129 +msgid "first name" +msgstr "krstné meno" + +#: contrib/auth/models.py:130 msgid "last name" msgstr "priezvisko" -#: contrib/auth/models.py:130 -msgid "e-mail address" -msgstr "e-mail adresa" - #: contrib/auth/models.py:131 +msgid "e-mail address" +msgstr "e-mail adresa" + +#: contrib/auth/models.py:132 msgid "password" msgstr "heslo" -#: contrib/auth/models.py:131 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "" -"Použite '[algo]$[salt]$[hexdigest]' alebo formulár na " -"zmenu hesla." - #: contrib/auth/models.py:132 +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "Použite '[algo]$[salt]$[hexdigest]' alebo formulár na zmenu hesla." + +#: contrib/auth/models.py:133 msgid "staff status" msgstr "postavenie zamestnanca" -#: contrib/auth/models.py:132 -msgid "Designates whether the user can log into this admin site." -msgstr "Určuje, či sa používateľ môže prihlásiť do správy stránok." - -#: contrib/auth/models.py:133 -msgid "active" -msgstr "aktívny" - #: contrib/auth/models.py:133 -msgid "" -"Designates whether this user should be treated as active. Unselect this " -"instead of deleting accounts." -msgstr "" -"Určuje, či je účet aktívny. Odškrtnite, ak chcete vypnúť používateľský účet." +msgid "Designates whether the user can log into this admin site." +msgstr "Určuje, či sa používateľ môže prihlásiť do správy stránok." #: contrib/auth/models.py:134 -msgid "superuser status" -msgstr "stav superpoužívateľa" +msgid "active" +msgstr "aktívny" #: contrib/auth/models.py:134 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" -"Určuje, či používateľ získava automaticky všetky práva aj bez priameho " -"priradenia." +msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." +msgstr "Určuje, či je účet aktívny. Odškrtnite, ak chcete vypnúť používateľský účet." + +#: contrib/auth/models.py:135 +msgid "superuser status" +msgstr "stav superpoužívateľa" #: contrib/auth/models.py:135 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "Určuje, či používateľ získava automaticky všetky práva aj bez priameho priradenia." + +#: contrib/auth/models.py:136 msgid "last login" msgstr "naposledy prihlásený" -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:137 msgid "date joined" msgstr "dátum registrácie" -#: contrib/auth/models.py:138 -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 zadaných práv bude mať používateľ aj všetky práva prislúchajúce " -"skupinám, v ktorých sa nachádza." - #: contrib/auth/models.py:139 +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 zadaných práv bude mať používateľ aj všetky práva prislúchajúce skupinám, v ktorých sa nachádza." + +#: contrib/auth/models.py:140 msgid "user permissions" msgstr "používateľské práva" -#: contrib/auth/models.py:143 +#: contrib/auth/models.py:144 +#: contrib/comments/models.py:50 +#: contrib/comments/models.py:168 msgid "user" msgstr "používateľ" -#: contrib/auth/models.py:144 +#: contrib/auth/models.py:145 msgid "users" msgstr "používatelia" -#: contrib/auth/models.py:300 +#: contrib/auth/models.py:301 msgid "message" msgstr "správa" -#: contrib/auth/views.py:50 +#: contrib/auth/views.py:56 msgid "Logged out" msgstr "Odhlásený" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:428 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Zadajte platnú e-mail adresu." @@ -1391,27 +1387,31 @@ msgid "Metadata" msgstr "Metaúdaje" -#: contrib/comments/forms.py:17 +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "%(site_name)s komentáre" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "Najnovšie komentáre na %(site_name)s" + +#: contrib/comments/forms.py:93 #: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Meno" -#: contrib/comments/forms.py:18 +#: contrib/comments/forms.py:94 msgid "Email address" msgstr "E-mail adresa" -#: contrib/comments/forms.py:20 +#: contrib/comments/forms.py:96 #: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Komentár" -#: contrib/comments/forms.py:23 -msgid "" -"If you enter anything in this field your comment will be treated as spam" -msgstr "" -"Ak ste do tohoto poľa čokoľvek zadali, váš komentár bude považovaný za spam" - -#: contrib/comments/forms.py:146 +#: contrib/comments/forms.py:173 #, 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." @@ -1419,69 +1419,70 @@ msgstr[1] "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené používať." msgstr[2] "Vyjadrujte sa slušne! Slová %s tu nie je dovolené používať." -#: contrib/comments/models.py:23 +#: contrib/comments/forms.py:180 +msgid "If you enter anything in this field your comment will be treated as spam" +msgstr "Ak ste do tohoto poľa čokoľvek zadali, váš komentár bude považovaný za spam" + +#: contrib/comments/models.py:22 +#: contrib/contenttypes/models.py:74 +msgid "content type" +msgstr "typ obsahu" + +#: contrib/comments/models.py:24 msgid "object ID" msgstr "identifikátor objektu" -#: contrib/comments/models.py:50 -msgid "user's name" -msgstr "meno používateľa" - -#: contrib/comments/models.py:51 -msgid "user's email address" -msgstr "e-mail adresa používateľa" - #: contrib/comments/models.py:52 +msgid "user's name" +msgstr "meno používateľa" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "e-mail adresa používateľa" + +#: contrib/comments/models.py:54 msgid "user's URL" msgstr "URL používateľa" -#: contrib/comments/models.py:54 +#: contrib/comments/models.py:56 +#: contrib/comments/models.py:76 +#: contrib/comments/models.py:169 msgid "comment" msgstr "komentár" -#: contrib/comments/models.py:57 +#: contrib/comments/models.py:59 msgid "date/time submitted" msgstr "dátum a čas odoslania" -#: contrib/comments/models.py:59 +#: contrib/comments/models.py:61 msgid "is public" msgstr "je verejný" -#: contrib/comments/models.py:60 -msgid "" -"Uncheck this box to make the comment effectively disappear from the site." -msgstr "" -"Ak chcete, aby komentár zmizol zo stránky, zrušte zaškrtnutie tohoto políčka." - #: contrib/comments/models.py:62 +msgid "Uncheck this box to make the comment effectively disappear from the site." +msgstr "Ak chcete, aby komentár zmizol zo stránky, zrušte zaškrtnutie tohoto políčka." + +#: contrib/comments/models.py:64 msgid "is removed" msgstr "je odstránený" -#: contrib/comments/models.py:63 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Zaškrtnite toto pole, ak je komentár nevhodný. Namiesto neho sa zobrazí " -"správa \"Tento komenár bol odstránený\"." - -#: contrib/comments/models.py:115 -msgid "" -"This comment was posted by an authenticated user and thus the name is read-" -"only." -msgstr "" -"Tento komentár je od autentifikovaného používateľa a preto je jeho meno len " -"na čítanie." - -#: contrib/comments/models.py:124 -msgid "" -"This comment was posted by an authenticated user and thus the email is read-" -"only." -msgstr "" -"Tento komentár je od autentifikovaného používateľa a preto je jeho e-mail " -"len na čítanie." - -#: contrib/comments/models.py:149 +#: contrib/comments/models.py:65 +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "Zaškrtnite toto pole, ak je komentár nevhodný. Namiesto neho sa zobrazí správa \"Tento komenár bol odstránený\"." + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "komentáre" + +#: contrib/comments/models.py:119 +msgid "This comment was posted by an authenticated user and thus the name is read-only." +msgstr "Tento komentár je od autentifikovaného používateľa a preto je jeho meno len na čítanie." + +#: contrib/comments/models.py:128 +msgid "This comment was posted by an authenticated user and thus the email is read-only." +msgstr "Tento komentár je od autentifikovaného používateľa a preto je jeho e-mail len na čítanie." + +#: contrib/comments/models.py:153 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1496,6 +1497,22 @@ "\n" "http://%(domain)s%(url)s" +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "príznak" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "dátum" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "komentárový príznak" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "komentárové príznaky" + #: contrib/comments/templates/comments/approve.html:4 msgid "Approve a comment" msgstr "Povoliť komentár" @@ -1516,10 +1533,8 @@ #: contrib/comments/templates/comments/approved.html:7 #: contrib/comments/templates/comments/deleted.html:7 #: contrib/comments/templates/comments/flagged.html:7 -msgid "" -"Thanks for taking the time to improve the quality of discussion on our site" -msgstr "" -"Ďakujeme za čas, ktorý ste venovali zvýšniu kvality diskusie na našej stránke" +msgid "Thanks for taking the time to improve the quality of discussion on our site" +msgstr "Ďakujeme za čas, ktorý ste venovali zvýšniu kvality diskusie na našej stránke" #: contrib/comments/templates/comments/delete.html:4 msgid "Remove a comment" @@ -1554,13 +1569,13 @@ msgid "Thanks for flagging" msgstr "Ďakujeme za označenie" -#: contrib/comments/templates/comments/form.html:16 -#: contrib/comments/templates/comments/preview.html:31 +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 msgid "Post" msgstr "Poslať" -#: contrib/comments/templates/comments/form.html:17 -#: contrib/comments/templates/comments/preview.html:32 +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 msgid "Preview" msgstr "Náhľad" @@ -1606,50 +1621,40 @@ msgstr "Ďakujeme za váš komentár" #: contrib/comments/templates/comments/preview.html:4 -#: contrib/comments/templates/comments/preview.html:12 +#: contrib/comments/templates/comments/preview.html:13 msgid "Preview your comment" msgstr "Náhľad komentára" -#: contrib/comments/templates/comments/preview.html:10 +#: contrib/comments/templates/comments/preview.html:11 msgid "Please correct the error below" msgid_plural "Please correct the errors below" msgstr[0] "Opravte, prosím, chyby uvedené nižšie" msgstr[1] "Opravte, prosím, chybu uvedenú nižšie" msgstr[2] "Opravte, prosím, chyby uvedené nižšie" -#: contrib/comments/templates/comments/preview.html:15 +#: contrib/comments/templates/comments/preview.html:16 msgid "Post your comment" msgstr "Poslať váš komentár" -#: contrib/comments/templates/comments/preview.html:15 +#: contrib/comments/templates/comments/preview.html:16 msgid "or make changes" msgstr "alebo urobiť zmeny" -#: contrib/contenttypes/models.py:67 +#: contrib/contenttypes/models.py:70 msgid "python model class name" msgstr "pythonovské meno triedy modelu" -#: contrib/contenttypes/models.py:71 -msgid "content type" -msgstr "typ obsahu" - -#: contrib/contenttypes/models.py:72 +#: contrib/contenttypes/models.py:75 msgid "content types" msgstr "typy obsahu" #: contrib/flatpages/admin.py:9 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Príklad: '/about/contact/'. Uistite sa, že máte lomky na začiatku a na konci." +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Príklad: '/about/contact/'. Uistite sa, že máte lomky na začiatku a na konci." #: contrib/flatpages/admin.py:11 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Táto hodnota môže obsahovať len písmená, číslice, podčiarkovniky, pomlčky a " -"lomky." +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "Táto hodnota môže obsahovať len písmená, číslice, podčiarkovniky, pomlčky a lomky." #: contrib/flatpages/admin.py:22 msgid "Advanced options" @@ -1672,12 +1677,8 @@ msgstr "názov šablóny" #: contrib/flatpages/models.py:12 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Príklad: 'flatpages/contact_page.html'. Ak nič nenapíšete, systém použije " -"'flatpages/default.html'." +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "Príklad: 'flatpages/contact_page.html'. Ak nič nenapíšete, systém použije 'flatpages/default.html'." #: contrib/flatpages/models.py:13 msgid "registration required" @@ -1685,9 +1686,7 @@ #: contrib/flatpages/models.py:13 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Ak je toto zaškrtnuté, stránku budú môcť prezerať len prihlásení " -"používatelia." +msgstr "Ak je toto zaškrtnuté, stránku budú môcť prezerať len prihlásení používatelia." #: contrib/flatpages/models.py:18 msgid "flat page" @@ -1698,25 +1697,25 @@ msgstr "statické stránky" #: contrib/formtools/wizard.py:130 -msgid "" -"We apologize, but your form has expired. Please continue filling out the " -"form from this page." -msgstr "" -"Ospravedlňujeme sa, ale platnosť formulára vypršala. Prosím, pokračujte vo " -"vypĺňaní z tejto stránky." - -#: contrib/gis/forms/fields.py:14 +msgid "We apologize, but your form has expired. Please continue filling out the form from this page." +msgstr "Ospravedlňujeme sa, ale platnosť formulára vypršala. Prosím, pokračujte vo vypĺňaní z tejto stránky." + +#: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Nie je zadaná žiadna geometrická hodnota." -#: contrib/gis/forms/fields.py:15 +#: contrib/gis/forms/fields.py:18 msgid "Invalid geometry value." msgstr "Chybná geometrická hodnota." -#: contrib/gis/forms/fields.py:16 +#: contrib/gis/forms/fields.py:19 msgid "Invalid geometry type." msgstr "Chybný geometrický typ." +#: contrib/gis/forms/fields.py:20 +msgid "An error occurred when transforming the geometry to the SRID of the geometry form field." +msgstr "Nastala chyba pri prevode geometrie do SRID z formulárového poľa." + #: contrib/humanize/templatetags/humanize.py:19 msgid "th" msgstr "th" @@ -1809,8 +1808,10 @@ msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Zadajte poštové smerovacie číslo v tvare NNNN alebo ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 +#: contrib/localflavor/ar/forms.py:49 +#: contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/br/forms.py:135 +#: contrib/localflavor/pe/forms.py:23 #: contrib/localflavor/pe/forms.py:51 msgid "This field requires only numbers." msgstr "Toto pole môže obsahovať len čísla." @@ -1863,15 +1864,15 @@ msgid "Vienna" msgstr "Viedeň" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 +#: contrib/localflavor/at/forms.py:20 +#: contrib/localflavor/ch/forms.py:16 #: contrib/localflavor/no/forms.py:12 msgid "Enter a zip code in the format XXXX." msgstr "Zadajte poštové smerovacie číslo v tvare XXXX." #: contrib/localflavor/at/forms.py:48 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." -msgstr "" -"Zadajte platné rakúske číslo sociálneho poistenia vo formáte XXXX XXXXXX." +msgstr "Zadajte platné rakúske číslo sociálneho poistenia vo formáte XXXX XXXXXX." #: contrib/localflavor/au/forms.py:16 msgid "Enter a 4 digit post code." @@ -1886,11 +1887,8 @@ msgstr "Telefónne čísla musia byť vo formáte XX-XXXX-XXXX." #: contrib/localflavor/br/forms.py:58 -msgid "" -"Select a valid brazilian state. That state is not one of the available " -"states." -msgstr "" -"Vyberte platný brazílsky štát. Tento štát nepatrí medzi existujúce štáty." +msgid "Select a valid brazilian state. That state is not one of the available states." +msgstr "Vyberte platný brazílsky štát. Tento štát nepatrí medzi existujúce štáty." #: contrib/localflavor/br/forms.py:94 msgid "Invalid CPF number." @@ -1914,8 +1912,7 @@ #: contrib/localflavor/ca/forms.py:88 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "" -"Zadajte platné číslo kanadského sociálneho poistenia vo formáte XXX-XXX-XX." +msgstr "Zadajte platné číslo kanadského sociálneho poistenia vo formáte XXX-XXX-XX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -2022,12 +2019,8 @@ msgstr "Zurich" #: contrib/localflavor/ch/forms.py:64 -msgid "" -"Enter a valid Swiss identity or passport card number in X1234567<0 or " -"1234567890 format." -msgstr "" -"Vložte platné švajčiarske číslo občianskeho preukazu alebo pasu vo formáte " -"X1234567<0 alebo 1234567890." +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "Vložte platné švajčiarske číslo občianskeho preukazu alebo pasu vo formáte X1234567<0 alebo 1234567890." #: contrib/localflavor/cl/forms.py:29 msgid "Enter a valid Chilean RUT." @@ -2097,7 +2090,8 @@ msgid "Moravian-Silesian Region" msgstr "Moravskosliezsky kraj" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:27 +#: contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Zadajte poštové smerovacie číslo v tvare XXXXX alebo XXX XX." @@ -2181,18 +2175,15 @@ msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 +#: contrib/localflavor/de/forms.py:14 +#: contrib/localflavor/fi/forms.py:12 #: contrib/localflavor/fr/forms.py:15 msgid "Enter a zip code in the format XXXXX." msgstr "Vložte poštové smerovacie číslo v tvare XXXXX." #: contrib/localflavor/de/forms.py:41 -msgid "" -"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " -"format." -msgstr "" -"Vložte platné nemecké číslo občianskeho preukazu vo formáte XXXXXXXXXXX-" -"XXXXXXX-XXXXXXX-X." +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "Vložte platné nemecké číslo občianskeho preukazu vo formáte XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" @@ -2463,15 +2454,11 @@ #: contrib/localflavor/es/forms.py:19 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." -msgstr "" -"Zadajte platné poštové smerovacie číslo v rozmedzí a v tvare 01XXX - 52XXX." +msgstr "Zadajte platné poštové smerovacie číslo v rozmedzí a v tvare 01XXX - 52XXX." #: contrib/localflavor/es/forms.py:39 -msgid "" -"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " -"9XXXXXXXX." -msgstr "" -"Zadajte platné telefónne číslo v tvare 6XXXXXXXX, 8XXXXXXXX alebo 9XXXXXXXX." +msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." +msgstr "Zadajte platné telefónne číslo v tvare 6XXXXXXXX, 8XXXXXXXX alebo 9XXXXXXXX." #: contrib/localflavor/es/forms.py:66 msgid "Please enter a valid NIF, NIE, or CIF." @@ -2494,10 +2481,8 @@ msgstr "Neplatný kontrolný súčet pre CIF." #: contrib/localflavor/es/forms.py:142 -msgid "" -"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "" -"Zadajte, prosím, platné číslo bankového účtu v tvare XXXX-XXXX-XX-XXXXXXXXXX." +msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Zadajte, prosím, platné číslo bankového účtu v tvare XXXX-XXXX-XX-XXXXXXXXXX." #: contrib/localflavor/es/forms.py:143 msgid "Invalid checksum for bank account number." @@ -2507,13 +2492,16 @@ msgid "Enter a valid Finnish social security number." msgstr "Vložte platné fínske číslo sociálneho poistenia." +#: contrib/localflavor/fr/forms.py:30 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefónne čísla musia mať formát 0X XX XX XX XX." + #: contrib/localflavor/in_/forms.py:14 msgid "Enter a zip code in the format XXXXXXX." msgstr "Vložte poštové smerovacie číslo v tvare XXXXXXX." #: contrib/localflavor/is_/forms.py:17 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "Zadajte platné islandské identifikačné číslo. Formát je XXXXXX-XXXX." #: contrib/localflavor/is_/forms.py:18 @@ -2933,27 +2921,22 @@ msgstr "Nesprávny kontrolný súčet pre národné identifikačné číslo." #: contrib/localflavor/pl/forms.py:71 -msgid "" -"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "" -"Zadajte platné daňové číselné pole (NIP) v tvare XXX-XXX-XX-XX alebo XX-XX-" -"XXX-XXX." +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Zadajte platné daňové číselné pole (NIP) v tvare XXX-XXX-XX-XX alebo XX-XX-XXX-XXX." #: contrib/localflavor/pl/forms.py:72 msgid "Wrong checksum for the Tax Number (NIP)." msgstr "Nesprávny kontrolný súčet pre daňové číslo (NIP)." -#: contrib/localflavor/pl/forms.py:111 -msgid "National Business Register Number (REGON) consists of 7 or 9 digits." -msgstr "" -"Číslo národného obchodného registra (REGON) sa skladá zo 7 alebo z 9 číslic." - -#: contrib/localflavor/pl/forms.py:112 +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "Číslo národného obchodného registra (REGON) sa skladá z 9 alebo zo 14 číslic." + +#: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." -msgstr "" -"Nesprávny kontrolný súčet pre číslo národného obchodného registra (REGON)." - -#: contrib/localflavor/pl/forms.py:155 +msgstr "Nesprávny kontrolný súčet pre číslo národného obchodného registra (REGON)." + +#: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." msgstr "Vložte poštové smerovacie číslo v tvare XX-XXX." @@ -3730,24 +3713,16 @@ msgstr "presmerovať z" #: contrib/redirects/models.py:8 -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 názvu domény. Napríklad: '/events/" -"search/'." +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 názvu domény. Napríklad: '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "presmerovať na" #: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Toto môže byť buď absolútna cesta (ako vyššie) alebo úplné URL začínajúce na " -"'http://'." +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "Toto môže byť buď absolútna cesta (ako vyššie) alebo úplné URL začínajúce na 'http://'." #: contrib/redirects/models.py:13 msgid "redirect" @@ -3789,128 +3764,129 @@ msgid "sites" msgstr "weby" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:700 +#: db/models/fields/__init__.py:356 +#: db/models/fields/__init__.py:710 msgid "This value must be an integer." msgstr "Táto hodnota musí byť celé číslo." -#: db/models/fields/__init__.py:387 +#: db/models/fields/__init__.py:388 msgid "This value must be either True or False." msgstr "Táto hodnota musí byť True alebo False." -#: db/models/fields/__init__.py:420 +#: db/models/fields/__init__.py:427 msgid "This field cannot be null." msgstr "Toto pole nemôže byť prázdne." -#: db/models/fields/__init__.py:436 +#: db/models/fields/__init__.py:443 msgid "Enter only digits separated by commas." msgstr "Zadajte len číslice oddelené čiarkami." -#: db/models/fields/__init__.py:467 +#: db/models/fields/__init__.py:474 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Zadajte platný dátum vo formáte RRRR-MM-DD." -#: db/models/fields/__init__.py:476 +#: db/models/fields/__init__.py:483 #, python-format msgid "Invalid date: %s" msgstr "Neplatný dátum: %s" -#: db/models/fields/__init__.py:540 db/models/fields/__init__.py:558 +#: db/models/fields/__init__.py:547 +#: db/models/fields/__init__.py:565 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Zadajte platný dátum a čas vo formáte RRRR-MM-DD HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/__init__.py:594 +#: db/models/fields/__init__.py:601 msgid "This value must be a decimal number." msgstr "Táto hodnota musí byť desiatkové číslo." -#: db/models/fields/__init__.py:676 +#: db/models/fields/__init__.py:686 msgid "This value must be a float." msgstr "Táto hodnota musí byť číslo s plávajúcou desatinnou čiarkou." -#: db/models/fields/__init__.py:736 +#: db/models/fields/__init__.py:746 msgid "This value must be either None, True or False." msgstr "Táto hodnota musí byť buď None, True alebo False." -#: db/models/fields/__init__.py:839 db/models/fields/__init__.py:853 +#: db/models/fields/__init__.py:849 +#: db/models/fields/__init__.py:863 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Zadajte platný čas vo formáte HH:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:779 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Ak chcete vybrať viac ako jednu položku, podržte \"Control\", alebo \"Command" -"\" na počítači Mac." - -#: db/models/fields/related.py:857 +#: db/models/fields/related.py:816 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Ak chcete vybrať viac ako jednu položku, podržte \"Control\", alebo \"Command\" na počítači Mac." + +#: db/models/fields/related.py:894 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "" -"Prosím, zadajte platný identifikátor %(self)s. Hodnoty %(value)r sú neplatné." -msgstr[1] "" -"Prosím, zadajte platný identifikátor %(self)s. Hodnota %(value)r je neplatná." -msgstr[2] "" -"Prosím, zadajte platný identifikátor %(self)s. Hodnoty %(value)r sú neplatné." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Prosím, zadajte platný identifikátor %(self)s. Hodnoty %(value)r sú neplatné." +msgstr[1] "Prosím, zadajte platný identifikátor %(self)s. Hodnota %(value)r je neplatná." +msgstr[2] "Prosím, zadajte platný identifikátor %(self)s. Hodnoty %(value)r sú neplatné." + +#: forms/fields.py:53 +msgid "This field is required." +msgstr "Toto pole je povinné." #: forms/fields.py:54 -msgid "This field is required." -msgstr "Toto pole je povinné." - -#: forms/fields.py:55 msgid "Enter a valid value." msgstr "Zadajte platnú hodnotu." +#: forms/fields.py:137 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Uistite sa, že táto hodnota má najviac %(max)d znakov (má %(length)d)." + #: forms/fields.py:138 #, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Uistite sa, že táto hodnota má najviac %(max)d znakov (má %(length)d)." - -#: forms/fields.py:139 -#, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Uistite sa, že zadaná hodnota má najmenej %(min)d znakov (má %(length)d)." +msgstr "Uistite sa, že zadaná hodnota má najmenej %(min)d znakov (má %(length)d)." + +#: forms/fields.py:165 +msgid "Enter a whole number." +msgstr "Zadajte celé číslo." #: forms/fields.py:166 -msgid "Enter a whole number." -msgstr "Zadajte celé číslo." - -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 +#: forms/fields.py:195 +#: forms/fields.py:224 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Uistite sa, že táto hodnota je menšia alebo rovná %s." -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 +#: forms/fields.py:167 +#: forms/fields.py:196 +#: forms/fields.py:225 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Uistite sa, že hodnota je väčšia alebo rovná %s." -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:194 +#: forms/fields.py:223 msgid "Enter a number." msgstr "Zadajte číslo." -#: forms/fields.py:227 +#: forms/fields.py:226 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Uistite sa, že nie je zadaných celkovo viac ako %s číslic." -#: forms/fields.py:228 +#: forms/fields.py:227 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Uistite sa, že nie je zadaných viac ako %s desatinných miest." -#: forms/fields.py:229 +#: forms/fields.py:228 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "" -"Uistite sa, že nie je zadaných viac ako %s číslic pred desatinnou čiarkou." - -#: forms/fields.py:287 forms/fields.py:849 +msgstr "Uistite sa, že nie je zadaných viac ako %s číslic pred desatinnou čiarkou." + +#: forms/fields.py:287 +#: forms/fields.py:862 msgid "Enter a valid date." msgstr "Zadajte platný dátum." -#: forms/fields.py:321 forms/fields.py:850 +#: forms/fields.py:321 +#: forms/fields.py:863 msgid "Enter a valid time." msgstr "Zadajte platný čas." @@ -3930,71 +3906,101 @@ msgid "The submitted file is empty." msgstr "Odoslaný súbor je prázdny." -#: forms/fields.py:477 -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 odoslali nebol obrázok alebo bol " -"poškodený." - -#: forms/fields.py:538 +#: forms/fields.py:449 +#, python-format +msgid "Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "Uistite sa, že názov súboru má najviac %(max)d znakov (má %(length)d)." + +#: forms/fields.py:482 +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 odoslali nebol obrázok alebo bol poškodený." + +#: forms/fields.py:543 msgid "Enter a valid URL." msgstr "Zadajte platnú URL adresu." -#: forms/fields.py:539 +#: forms/fields.py:544 msgid "This URL appears to be a broken link." msgstr "Toto URL je chybný odkaz." -#: forms/fields.py:618 forms/fields.py:696 +#: forms/fields.py:624 +#: forms/fields.py:702 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Vyberte platnú voľbu. %(value)s nepatrí medzi dostupné možnosti." -#: forms/fields.py:697 forms/fields.py:758 forms/models.py:729 +#: forms/fields.py:703 +#: forms/fields.py:764 +#: forms/models.py:1003 msgid "Enter a list of values." msgstr "Vložte zoznam hodnôt." -#: forms/fields.py:878 +#: forms/fields.py:891 msgid "Enter a valid IPv4 address." msgstr "Zadajte platnú IPv4 adresu." -#: forms/fields.py:888 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Zadajte platný 'slug' pozostávajúci z písmen, čísel, podčiarkovníkov alebo " -"pomlčiek." - -#: forms/formsets.py:247 forms/formsets.py:249 +#: forms/fields.py:901 +msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Zadajte platný 'slug' pozostávajúci z písmen, čísel, podčiarkovníkov alebo pomlčiek." + +#: forms/formsets.py:271 +#: forms/formsets.py:273 msgid "Order" msgstr "Poradie" -#: forms/models.py:289 forms/models.py:298 +#: forms/models.py:367 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s musí byť unikátne pre %(date_field)s %(lookup)s." + +#: forms/models.py:381 +#: forms/models.py:389 #, python-format msgid "%(model_name)s with this %(field_label)s already exists." msgstr "%(model_name)s s týmto %(field_label)s už existuje." -#: forms/models.py:602 +#: forms/models.py:594 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Prosím, opravte duplicitné dáta pre %(field)s." + +#: forms/models.py:598 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "Dáta pre %(field)s musia byť unikátne, prosím, opravte duplikáty." + +#: forms/models.py:604 +#, python-format +msgid "Please correct the duplicate data for %(field_name)s which must be unique for the %(lookup)s in %(date_field)s." +msgstr "Dáta pre %(field_name)s musia byť unikátne pre %(lookup)s v %(date_field)s, prosím, opravte duplikáty." + +#: forms/models.py:612 +msgid "Please correct the duplicate values below." +msgstr "Prosím, opravte nižšie uvedené duplicitné hodnoty. " + +#: forms/models.py:867 msgid "The inline foreign key did not match the parent instance primary key." -msgstr "" -"Vnorený cudzí kľúč sa nezhoduje s nadradenou inštanciou primárnho kľúča." - -#: forms/models.py:659 +msgstr "Vnorený cudzí kľúč sa nezhoduje s nadradenou inštanciou primárnho kľúča." + +#: forms/models.py:930 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "" -"Vyberte platnú možnosť. Vybraná položka nepatrí medzi dostupné možnosti." - -#: forms/models.py:730 +msgstr "Vyberte platnú možnosť. Vybraná položka nepatrí medzi dostupné možnosti." + +#: forms/models.py:1004 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Vyberte platnú možnost. %s nepatrí medzi dostupné možnosti." -#: template/defaultfilters.py:751 +#: forms/models.py:1006 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "\"%s\" nie je platná hodnota pre primárny kľúč." + +#: template/defaultfilters.py:767 msgid "yes,no,maybe" msgstr "áno,nie,možno" -#: template/defaultfilters.py:782 +#: template/defaultfilters.py:798 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" @@ -4002,42 +4008,42 @@ msgstr[1] "%(size)d bajt" msgstr[2] "%(size)d bajty" -#: template/defaultfilters.py:784 +#: template/defaultfilters.py:800 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:786 +#: template/defaultfilters.py:802 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:787 +#: template/defaultfilters.py:803 #, python-format msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "popoludní" -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "dopoludnia" -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "popoludní" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "dopoludnia" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "polnoc" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" msgstr "poludnie" @@ -4105,23 +4111,28 @@ msgid "February" msgstr "február" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "March" msgstr "marec" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "April" msgstr "apríl" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "May" msgstr "máj" -#: utils/dates.py:18 utils/dates.py:31 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "June" msgstr "jún" -#: utils/dates.py:19 utils/dates.py:31 +#: utils/dates.py:19 +#: utils/dates.py:31 msgid "July" msgstr "júl" @@ -4267,16 +4278,16 @@ msgstr[1] "minúta" msgstr[2] "minúty" -#: utils/timesince.py:43 +#: utils/timesince.py:45 msgid "minutes" msgstr "minúty" -#: utils/timesince.py:48 +#: utils/timesince.py:50 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" -#: utils/timesince.py:54 +#: utils/timesince.py:56 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" @@ -4311,3 +4322,4 @@ #, python-format msgid "The %(verbose_name)s was deleted." msgstr "Objekt %(verbose_name)s bol zmazaný." + diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sk/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/sk/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sk/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/sk/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/sk/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-20 20:16+0100\n" +"POT-Creation-Date: 2009-09-17 12:00+0200\n" "PO-Revision-Date: 2009-03-15 17:23+0100\n" "Last-Translator: Marian Andre \n" "Language-Team: Slovak \n" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sk/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sk/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sk/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y' +TIME_FORMAT = 'G:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j.n.Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sl/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sl/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sl/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd. F Y' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j. M. Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sq/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/sq/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sq/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sq/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5011 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-01-27 22:39-0800\n" +"PO-Revision-Date: 2010-01-27 23:01+0200\n" +"Last-Translator: Besnik Bleta \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

                                      To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                                      \n" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: forms/models.py:964 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "" + +#: contrib/admin/options.py:1006 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "" +msgstr[1] "" + +#: db/models/base.py:775 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: db/models/base.py:790 db/models/base.py:798 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Ka tashmë një %(model_name)s me këtë %(field_label)s." + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/options.py:860 contrib/admin/options.py:1072 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "" + +#: template/defaultfilters.py:806 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:811 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: template/defaultfilters.py:808 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:810 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: contrib/admin/sites.py:447 +#, python-format +msgid "%s administration" +msgstr "" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

                                      By %s:

                                      \n" +"
                                        \n" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:7 +#, python-format +msgid "" +"0 of %(total_count)s %(module_name)s selected" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "" + +#: contrib/admin/helpers.py:19 +msgid "Action:" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:57 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: contrib/admin/options.py:834 +#, python-format +msgid "Add %s" +msgstr "" + +#: contrib/admin/widgets.py:238 +msgid "Add Another" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:33 +#: contrib/admin/templates/admin/edit_inline/tabular.html:78 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "" + +#: contrib/admin/options.py:561 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "All %(total_count)s %(module_name)s selected" +msgstr "" + +#: contrib/admin/templatetags/admin_list.py:240 +msgid "All dates" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: contrib/admin/actions.py:67 contrib/admin/options.py:1094 +msgid "Are you sure?" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "" + +#: utils/dates.py:19 +msgid "August" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Basque" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: db/models/fields/__init__.py:892 +msgid "Big (8 byte) integer" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: db/models/fields/__init__.py:512 +msgid "Boolean (Either True or False)" +msgstr "" + +#: db/models/fields/__init__.py:923 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: conf/global_settings.py:83 +msgid "Brazilian Portuguese" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "" + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "" + +#: contrib/admin/options.py:925 +#, python-format +msgid "Change %s" +msgstr "" + +#: contrib/admin/options.py:1124 +#, python-format +msgid "Change history: %s" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "" + +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "" + +#: contrib/auth/admin.py:121 +#, python-format +msgid "Change password: %s" +msgstr "" + +#: contrib/admin/widgets.py:96 +msgid "Change:" +msgstr "" + +#: contrib/admin/options.py:565 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:556 +#, python-format +msgid "Changed %s." +msgstr "" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:16 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:14 +msgid "Click here to select all objects across all pages" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: db/models/fields/__init__.py:582 +msgid "Comma-separated integers" +msgstr "" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "" + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Croatian" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/admin/widgets.py:96 +msgid "Currently:" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "" + +#: utils/translation/trans_real.py:531 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:530 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "" + +#: contrib/admin/options.py:970 +msgid "Database error" +msgstr "" + +#: db/models/fields/__init__.py:684 +msgid "Date (with time)" +msgstr "" + +#: db/models/fields/__init__.py:596 +msgid "Date (without time)" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "" + +#: contrib/admin/widgets.py:72 +msgid "Date:" +msgstr "" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "" + +#: utils/dates.py:20 +msgid "December" +msgstr "" + +#: db/models/fields/__init__.py:752 +msgid "Decimal number" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:291 +msgid "Delete" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "" + +#: contrib/admin/actions.py:85 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "" + +#: contrib/admin/options.py:570 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/auth/models.py:187 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:185 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:186 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: conf/global_settings.py:79 +msgid "Dutch" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "" + +#: db/models/fields/__init__.py:807 +msgid "E-mail address" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "" + +#: forms/fields.py:251 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Sigurohuni që nuk ka më shumë se %s vende dhjetore." + +#: forms/fields.py:252 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Sigurohuni që nuk ka më tepër se %s shifra para presjes dhjetore." + +#: forms/fields.py:250 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Sigurohuni që nuk ka më tepër se %s shifra gjithsej." + +#: forms/fields.py:424 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: core/validators.py:129 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:135 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:100 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: core/validators.py:123 forms/fields.py:197 forms/fields.py:249 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:118 forms/fields.py:196 forms/fields.py:248 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" + +#: forms/fields.py:653 forms/fields.py:715 forms/models.py:961 +msgid "Enter a list of values." +msgstr "Jepni një listë vlerash." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" + +#: forms/fields.py:225 forms/fields.py:247 +msgid "Enter a number." +msgstr "Jepni një numër." + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "" + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: core/validators.py:88 forms/fields.py:854 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Jepni një 'slug' të vlefshëm, të përbërë nga shkronja, numra, nëvija ose " +"vija në mes." + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "" + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "" + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "" + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "" + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "" + +#: core/validators.py:91 forms/fields.py:847 +msgid "Enter a valid IPv4 address." +msgstr "Jepni një vendndodhje të vlefshme IPv4." + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: core/validators.py:69 forms/fields.py:510 +msgid "Enter a valid URL." +msgstr "Jepni një URL të vlefshme." + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "" + +#: db/models/fields/__init__.py:600 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Jepni një datë të vlefshme në formatin YYYY-MM-DD." + +#: forms/fields.py:309 forms/fields.py:819 +msgid "Enter a valid date." +msgstr "Jepni një datë të vlefshme." + +#: db/models/fields/__init__.py:682 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "" +"Jepni një datë/kohë të vlefshme, në formatin YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." + +#: forms/fields.py:363 +msgid "Enter a valid date/time." +msgstr "Jepni një datë/kohë të vlefshme." + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:85 forms/fields.py:414 +msgid "Enter a valid e-mail address." +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: db/models/fields/__init__.py:1027 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Jepni një kohë të vlefshme, në formatin HH:MM[:ss[.uuuuuu]]." + +#: forms/fields.py:337 forms/fields.py:820 +msgid "Enter a valid time." +msgstr "Jepni një kohë të vlefshme." + +#: core/validators.py:19 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Jepni vlerë të vlefshme." + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "" + +#: forms/fields.py:195 +msgid "Enter a whole number." +msgstr "Jepni një numër të tërë." + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "" + +#: core/validators.py:94 db/models/fields/__init__.py:587 +msgid "Enter only digits separated by commas." +msgstr "Jepni vetëm shifra të ndara nga presje." + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Estonian" +msgstr "" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "" + +#: utils/dates.py:18 +msgid "February" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: db/models/fields/__init__.py:72 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: db/models/fields/__init__.py:814 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:76 +msgid "Filter" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Finnish" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: db/models/fields/__init__.py:839 +msgid "Floating point number" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: conf/global_settings.py:61 +msgid "French" +msgstr "" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: conf/global_settings.py:62 +msgid "Frisian" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Galician" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Georgian" +msgstr "" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/auth/admin.py:29 +msgid "Groups" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Hebrew" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Hindi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: db/models/fields/related.py:959 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Mbani të shtypur \"Control\", ose \"Command\" në Mac, për të përzgjedhur më " +"shumë se një." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:36 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Hungarian" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:905 +msgid "IP address" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/auth/admin.py:28 +msgid "Important dates" +msgstr "" + +#: contrib/auth/models.py:191 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" + +#: db/models/fields/__init__.py:471 db/models/fields/__init__.py:867 +#: db/models/fields/__init__.py:963 db/models/fields/__init__.py:974 +#: db/models/fields/__init__.py:1001 +msgid "Integer" +msgstr "" + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: db/models/fields/__init__.py:601 +#, python-format +msgid "Invalid date: %s" +msgstr "Datë e pavlefshme: %s" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "" + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "" + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Irish" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "" + +#: contrib/admin/options.py:736 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "" + +#: utils/dates.py:18 +msgid "January" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Japanese" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Kannada" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Khmer" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Korean" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Latvian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: conf/global_settings.py:76 +msgid "Lithuanian" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/admin/sites.py:402 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "" + +#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "" + +#: contrib/auth/views.py:60 +msgid "Logged out" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/admin/sites.py:313 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" + +#: contrib/admin/widgets.py:126 +msgid "Lookup" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: utils/translation/trans_real.py:554 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: conf/global_settings.py:78 +msgid "Macedonian" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 +msgid "No" +msgstr "" + +#: contrib/admin/options.py:754 +msgid "No action selected." +msgstr "" + +#: contrib/admin/options.py:574 +msgid "No fields changed." +msgstr "" + +#: forms/fields.py:422 +msgid "No file was submitted." +msgstr "Nuk u parashtrua kartelë." + +#: forms/fields.py:421 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"Nuk u parashtrua ndonjë kartelë. Kontrolloni llojin e kodimit te forma." + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "" + +#: contrib/admin/options.py:137 contrib/admin/options.py:152 +msgid "None" +msgstr "" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: utils/dates.py:19 +msgid "November" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "" + +#: utils/dates.py:19 +msgid "October" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: contrib/admin/util.py:175 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "" + +#: contrib/admin/util.py:170 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: forms/formsets.py:287 forms/formsets.py:289 +msgid "Order" +msgstr "Rend" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "" + +#: contrib/auth/admin.py:111 +msgid "Password changed successfully." +msgstr "" + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/auth/admin.py:27 +msgid "Permissions" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Persian" +msgstr "" + +#: contrib/auth/admin.py:26 +msgid "Personal info" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "" + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "" + +#: forms/models.py:542 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:538 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: forms/models.py:548 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:556 +msgid "Please correct the duplicate values below." +msgstr "" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:65 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: db/models/fields/related.py:1020 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Ju lutem, jepni ID-ra %(self)s të vlefshme. Vlera %(value)r është e " +"pavlefshme." +msgstr[1] "" +"Ju lutem, jepni ID-ra %(self)s të vlefshme. Vlerat %(value)r janë të " +"pavlefshme" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: contrib/admin/sites.py:306 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "" + +#: conf/global_settings.py:81 +msgid "Polish" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: conf/global_settings.py:82 +msgid "Portuguese" +msgstr "" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "" + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "" + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:36 +#: contrib/admin/templates/admin/edit_inline/tabular.html:81 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +#: contrib/auth/models.py:180 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: conf/global_settings.py:84 +msgid "Romanian" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "" + +#: conf/global_settings.py:85 +msgid "Russian" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "" + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" + +#: forms/fields.py:577 forms/fields.py:652 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Përzgjidhni një zgjedhje të vlefshme. %(value)s nuk është nga zgjedhjet e " +"mundshme." + +#: forms/models.py:962 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "" +"Përzgjidhni një zgjedhje të vlefshme. %s nuk është një nga zgjedhjet e " +"mundshme." + +#: forms/models.py:886 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Përzgjidhni një zgjedhje të vlefshme. Ajo zgjedhje nuk është një nga " +"zgjedhjet e mundshme." + +#: contrib/admin/templates/admin/actions.html:14 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "" + +#: utils/dates.py:19 +msgid "September" +msgstr "" + +#: conf/global_settings.py:88 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:89 +msgid "Serbian Latin" +msgstr "" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: conf/global_settings.py:96 +msgid "Simplified Chinese" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/admin/sites.py:388 +msgid "Site administration" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: conf/global_settings.py:86 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:87 +msgid "Slovenian" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: conf/global_settings.py:55 +msgid "Spanish" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: db/models/fields/__init__.py:554 db/models/fields/__init__.py:984 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/admin/actions.py:60 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: conf/global_settings.py:90 +msgid "Swedish" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: utils/translation/trans_real.py:532 +msgid "TIME_FORMAT" +msgstr "P" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: conf/global_settings.py:91 +msgid "Tamil" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: conf/global_settings.py:92 +msgid "Telugu" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: db/models/fields/__init__.py:1007 +msgid "Text" +msgstr "" + +#: conf/global_settings.py:93 +msgid "Thai" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" + +#: contrib/admin/options.py:640 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "" + +#: contrib/admin/options.py:683 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:675 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: contrib/admin/options.py:1087 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s u krijua me sukses." + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s u fshi." + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s u përditësua me sukses." + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: forms/models.py:820 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: forms/fields.py:423 +msgid "The submitted file is empty." +msgstr "Kartela e parashtruar është bosh." + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "" + +#: 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 "" + +#: core/validators.py:71 forms/fields.py:511 +msgid "This URL appears to be a broken link." +msgstr "Kjo URL duket se është lidhje e dëmtuar." + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" + +#: db/models/fields/__init__.py:67 +msgid "This field cannot be blank." +msgstr "" + +#: db/models/fields/__init__.py:66 +msgid "This field cannot be null." +msgstr "Kjo fushë nuk mund të jetë bosh." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Kjo fushë është e domosdoshme." + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "" + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "" + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "" + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" + +#: db/models/fields/__init__.py:750 +msgid "This value must be a decimal number." +msgstr "Kjo vlerë duhet të jetë një numër dhjetor." + +#: db/models/fields/__init__.py:837 db/models/fields/__init__.py:865 +msgid "This value must be a float." +msgstr "" + +#: db/models/fields/__init__.py:475 +msgid "This value must be an integer." +msgstr "Kjo vlerë duhet të jetë numër i plotë." + +#: db/models/fields/__init__.py:921 +msgid "This value must be either None, True or False." +msgstr "Kjo vlerë duhet të jetë None, True ose False." + +#: db/models/fields/__init__.py:510 +msgid "This value must be either True or False." +msgstr "Kjo vlerë duhet të jetë True ose False." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: db/models/fields/__init__.py:1023 +msgid "Time" +msgstr "" + +#: contrib/admin/widgets.py:72 +msgid "Time:" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: conf/global_settings.py:97 +msgid "Traditional Chinese" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: conf/global_settings.py:94 +msgid "Turkish" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1103 +msgid "URL" +msgstr "" + +#: conf/global_settings.py:95 +msgid "Ukrainian" +msgstr "" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:435 +msgid "Unknown" +msgstr "" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "" + +#: forms/fields.py:459 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Ngarkoni një figurë të vlefshme. Kartela që ngarkuat ose nuk qe figurë, ose " +"qe figurë e dëmtuar." + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/auth/models.py:184 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "" + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "" + +#: contrib/admin/sites.py:329 contrib/admin/sites.py:335 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: db/models/fields/__init__.py:65 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/comments/forms.py:175 +#, 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] "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/formtools/wizard.py:132 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "" + +#: contrib/admin/templates/admin/base.html:27 +msgid "Welcome," +msgstr "" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: db/models/fields/__init__.py:1111 +msgid "XML text" +msgstr "" + +#: utils/translation/trans_real.py:553 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 +msgid "Yes" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "" + +#: contrib/admin/options.py:654 contrib/admin/options.py:687 +#, python-format +msgid "You may add another %s below." +msgstr "" + +#: contrib/admin/options.py:644 contrib/admin/options.py:677 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/admin/sites.py:332 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "" + +#: contrib/auth/models.py:186 +msgid "active" +msgstr "" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admin/options.py:556 contrib/admin/options.py:566 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:797 +#: forms/models.py:544 +msgid "and" +msgstr "" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "" + +#: utils/dates.py:23 +msgid "apr" +msgstr "" + +#: utils/dates.py:24 +msgid "aug" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "" + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "" + +#: contrib/auth/models.py:189 +msgid "date joined" +msgstr "" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/dates.py:24 +msgid "dec" +msgstr "" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "" + +#: contrib/auth/models.py:183 +msgid "e-mail address" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "" + +#: utils/dates.py:23 +msgid "feb" +msgstr "" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "" + +#: contrib/auth/models.py:181 +msgid "first name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "" + +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "" + +#: contrib/auth/models.py:99 contrib/auth/models.py:190 +msgid "groups" +msgstr "" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "" + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "" + +#: utils/dates.py:23 +msgid "jan" +msgstr "" + +#: utils/dates.py:24 +msgid "jul" +msgstr "" + +#: utils/dates.py:23 +msgid "jun" +msgstr "" + +#: contrib/auth/models.py:188 +msgid "last login" +msgstr "" + +#: contrib/auth/models.py:182 +msgid "last name" +msgstr "" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "" + +#: utils/dates.py:23 +msgid "mar" +msgstr "" + +#: utils/dates.py:23 +msgid "may" +msgstr "" + +#: contrib/auth/models.py:367 +msgid "message" +msgstr "" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "" + +#: utils/dates.py:24 +msgid "nov" +msgstr "" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "" + +#: utils/dates.py:24 +msgid "oct" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "" + +#: utils/text.py:128 +msgid "or" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "" + +#: contrib/auth/models.py:184 +msgid "password" +msgstr "" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "" + +#: utils/dates.py:24 +msgid "sep" +msgstr "" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "" + +#: contrib/auth/models.py:185 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:187 +msgid "superuser status" +msgstr "" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "" + +#: contrib/auth/models.py:196 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "" + +#: contrib/auth/models.py:192 +msgid "user permissions" +msgstr "" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "" + +#: contrib/auth/models.py:180 +msgid "username" +msgstr "" + +#: contrib/auth/models.py:197 +msgid "users" +msgstr "" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:775 +msgid "yes,no,maybe" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#~ msgid "" +#~ "Ensure this value has at least %(min)d characters (it has %(length)d)." +#~ msgstr "" +#~ "Sigurohuni që kjo vlerë ka të paktën %(min)d shenja (ka gjatësinë %" +#~ "(length)d)." + +#~ msgid "" +#~ "Ensure this value has at most %(max)d characters (it has %(length)d)." +#~ msgstr "" +#~ "Sigurohuni që kjo vlerë ka e shumta %(max)d shenja (ka gjatësinë %(length)" +#~ "d)." + +#~ msgid "Ensure this value is greater than or equal to %s." +#~ msgstr "Sigurohuni që vlera është më e madhe ose e barabartë me %s." + +#~ msgid "Ensure this value is less than or equal to %s." +#~ msgstr "Sigurohuni që vlera është më e vogël ose e barabartë me %s." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sq/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/sq/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sq/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sq/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,119 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-01-27 22:39-0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:89 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:129 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:178 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:176 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Tomorrow" +msgstr "" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/sr/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/sr/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/sr/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-08 22:50+0200\n" -"PO-Revision-Date: 2009-04-01 18:38+0200\n" +"POT-Creation-Date: 2010-04-16 00:03+0200\n" +"PO-Revision-Date: 2010-03-23 23:39+0100\n" "Last-Translator: Janos Guljas \n" "Language-Team: Branko Vukelic & Janos Guljas " " & Nesh & Petar %(username)s." msgstr "Унесите нову лозинку за корисника %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Лозинка" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Лозинка (поновите)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Ради провере тачности поново унесите лозинку коју сте унели горе." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Додај још један објекат класе %(verbose_name)s." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Обриши" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Брисање?" @@ -838,9 +887,9 @@ msgstr "Поновна пријава" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Измена лозинке" @@ -853,7 +902,7 @@ msgid "Your password was changed." msgstr "Ваша лозинка је измењена." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -861,21 +910,17 @@ "Из безбедносних разлога прво унесите своју стару лозинку, а нову затим " "унесите два пута да бисмо могли да проверимо да ли сте је правилно унели." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Стара лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Нова лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Потврда лозинке:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Стара лозинка" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Нова лозинка" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Измени моју лозинку" @@ -914,6 +959,14 @@ "Унесите нову лозинку два пута како бисмо могли да проверимо да ли сте је " "правилно унели." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Нова лозинка:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Потврда лозинке:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Ресетовање лозинке неуспешно" @@ -981,7 +1034,7 @@ msgid "Reset my password" msgstr "Ресетуј моју лозинку" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Сви датуми" @@ -995,158 +1048,77 @@ msgid "Select %s to change" msgstr "Одабери објекат класе %s за измену" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "сајт" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "темплејт" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "таг:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "филтер:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "вју:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Апликација %r није пронађена" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Модел %(model_name)r није пронађен у апликацији %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "повезани објекти класе `%(app_label)s.%(data_type)s`" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "модел:" # WARN: possible breakage in future # This string is interpolated in strings below, which can cause breakage in # future releases. -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "класе `%(app_label)s.%(object_name)s`" # WARN: possible breakage in future -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "сви повезани објекти %s" # WARN: possible breakage in future -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "број повезаних објеката %s" # WARN: possible breakage in future -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Поља у повезаним објектима %s" -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 -msgid "Integer" -msgstr "Цео број" - -#: contrib/admindocs/views.py:316 -msgid "Boolean (Either True or False)" -msgstr "Булова вредност (True или False)" - -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Стринг (највише %(max_length)s знакова)" - -#: contrib/admindocs/views.py:318 -msgid "Comma-separated integers" -msgstr "Цели бројеви раздвојени запетама" - -#: contrib/admindocs/views.py:319 -msgid "Date (without time)" -msgstr "Датум (без времена)" - -#: contrib/admindocs/views.py:320 -msgid "Date (with time)" -msgstr "Датум (са временом)" - -#: contrib/admindocs/views.py:321 -msgid "Decimal number" -msgstr "Децимални број" - -#: contrib/admindocs/views.py:322 -msgid "E-mail address" -msgstr "Имејл адреса" - -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 -msgid "File path" -msgstr "Путања фајла" - -#: contrib/admindocs/views.py:325 -msgid "Floating point number" -msgstr "Број са покреном запетом" - -#: contrib/admindocs/views.py:329 contrib/comments/models.py:60 -msgid "IP address" -msgstr "IP адреса" - -#: contrib/admindocs/views.py:331 -msgid "Boolean (Either True, False or None)" -msgstr "Булова вредност (True, False или None)" - -#: contrib/admindocs/views.py:332 -msgid "Relation to parent model" -msgstr "Веза са родитељским моделом" - -#: contrib/admindocs/views.py:333 -msgid "Phone number" -msgstr "Број телефона" - -#: contrib/admindocs/views.py:338 -msgid "Text" -msgstr "Текст" - -#: contrib/admindocs/views.py:339 -msgid "Time" -msgstr "Време" - -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:341 -msgid "U.S. state (two uppercase letters)" -msgstr "Држава у САД (два велика слова)" - -#: contrib/admindocs/views.py:342 -msgid "XML text" -msgstr "XML текст" - -#: contrib/admindocs/views.py:368 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s не изгледа као urlpattern објекат" @@ -1219,66 +1191,63 @@ msgstr "" "Исто као претходни, али отвара администрациону страницу у новом прозору." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Лични подаци" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Дозволе" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Важни датуми" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Групе" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Додај корисника" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Лозинка успешно измењена." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Измени лозинку: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Корисник" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" "Неопходно. Највише 30 словних места. Само алфанумерички знаци (слова, бројке " -"и доња црта)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Ова вредност може садржати само слова, бројке и доње црте." +"и @/./+/-/_)." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Ова вредност може садржати само слова, бројке и @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Потврда лозинке" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Корисник са тим корисничким именом већ постоји." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Два поља за лозинке се нису поклопила." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Овај налог је неактиван." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1286,11 +1255,11 @@ "Изгледа да су колачићи искључени у вашем браузеру. Они морају бити укључени " "да би сте се пријавили." -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Имејл адреса" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1298,72 +1267,71 @@ "Та имејл адреса није у вези ни са једним налогом. Да ли сте сигурни да сте " "се већ регистровали?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Ресетовање лозинке на %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Нова лозинка" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Потврда нове лозинке" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Стара лозинка" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Ваша стара лознка није правилно унесена. Унесите је поново." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "име" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "шифра дозволе" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "дозвола" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "дозволе" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "група" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "групе" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "корисничко име" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Неопходно. Највише 30 словних места. Само алфанумерички знаци (слова, бројке " +"и @/./+/-/_)." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "име" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "презиме" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "имејл адреса" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "лозинка" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1371,20 +1339,20 @@ "Користите '[algo]$[salt]$[hexdigest]' или формулар за " "унос лозинке." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "статус члана посаде" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "" "Означава да ли корисник може да се пријави на овај сајт за администрацију." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "активан" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1392,26 +1360,26 @@ "Означава да ли се корисник сматра активним. Деселектујте ово уместо да " "бришете налог." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "статус администратора" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Означава да ли корисник има све дозволе без додељивања појединачних дозвола." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:204 msgid "last login" msgstr "последња пријава" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "датум регистрације" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1419,39 +1387,81 @@ "Поред ручно додељених дозвола, овај корисник ће имати и дозволе додељене " "гурпама којима припада." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "корисничке дозволе" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "корисник" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "корисници" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "порука" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Одјављен" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Унесите важећу имејл адресу." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Садржај" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Метаподаци" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "означен" +msgstr[1] "означена" +msgstr[2] "означених" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Означавање изабраних коментара" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "одобрен" +msgstr[1] "одобрена" +msgstr[2] "одобрених" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Одобрење изабраних коментара" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "уклоњен" +msgstr[1] "уклоњена" +msgstr[2] "уклоњених" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Обриши изабране коментаре" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "Над једним коментаром је успешно урађено: %(action)s." +msgstr[1] "Над %(count)s коментара је успешно урађено: %(action)s." +msgstr[2] "Над %(count)s коментара је успешно урађено: %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1463,7 +1473,6 @@ msgstr "Скорији коментари на сајту %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Име" @@ -1471,12 +1480,16 @@ msgid "Email address" msgstr "Имејл адреса" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1114 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Коментари" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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." @@ -1484,12 +1497,12 @@ msgstr[1] "Пази на језик! Речи „%s“ овде нису дозвољене." msgstr[2] "Пази на језик! Речи „%s“ овде нису дозвољене." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "Ако ишта унесете у ово поље, Ваш коментар ће се сматрати спамом." -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "тип садржаја" @@ -1518,6 +1531,10 @@ msgid "date/time submitted" msgstr "датум/време постављања" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:909 +msgid "IP address" +msgstr "IP адреса" + #: contrib/comments/models.py:61 msgid "is public" msgstr "јавно" @@ -1600,7 +1617,6 @@ msgstr "Да ли заиста желите да означите овај коментар јавним?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Одобри" @@ -1623,11 +1639,6 @@ msgid "Really remove this comment?" msgstr "Да ли заиста желите да обришете овај коментар?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Обриши" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Хвала што користите наш сајт!" @@ -1658,39 +1669,6 @@ msgid "Preview" msgstr "Преглед" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Коментари који чекају на одобрење" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Нема коментара на чекању" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Имејл адреса" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Пријављен?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP адреса" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Датум постављања" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "да" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "не" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Хвала на коментару" @@ -1719,11 +1697,11 @@ msgid "or make changes" msgstr "или изврши измене" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "име python класе модела" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "типови садржаја" @@ -1787,7 +1765,7 @@ msgid "flat pages" msgstr "флет странице" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1795,6 +1773,39 @@ "Жао нам је, али Ваша сесија је истекла. Попуњавање формулара наставите на " "овој страници." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Основно „GIS“ поље које мапира тип геометрије по „OpenGIS“ спецификацији." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Тачка" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Линија" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Полигон" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Више тачака" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Више линија" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Више полигона" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Колекција геопметријских облика" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Нисте задали параметре за геометрију." @@ -1811,7 +1822,7 @@ msgid "" "An error occurred when transforming the geometry to the SRID of the geometry " "form field." -msgstr "" +msgstr "Грешка се десила током трансформације геометрије на „SRID“ тип поља." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1901,25 +1912,25 @@ msgid "yesterday" msgstr "јуче" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Унесите поштански број у формату НННН или АННННААА." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Ово поље мора садржати само бројке." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Ово поље мора садржати 7 или 8 цифара" -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Унестие важећи CUIT у формату XX-XXXXXXXX-X or XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Неважећи CUIT" @@ -1959,8 +1970,8 @@ msgid "Vienna" msgstr "Беч" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Унесите поштански број у формату XXXX." @@ -1969,45 +1980,45 @@ msgstr "" "Унесите важећи аустријски број социјалног осигурања у формату XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Унесите четвороцифрени поштански број" -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Унесите поштански број у формату XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Број телефона мора бити у формату XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." msgstr "Одаберите постојећу бразилску државу. Та држава није међу понуђенима." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Неважећи CPF број" -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "" -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "" -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "" -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" @@ -2115,21 +2126,21 @@ msgid "Zurich" msgstr "" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." msgstr "" -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "" -#: contrib/localflavor/cl/forms.py:30 -msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "" - #: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "" @@ -2189,23 +2200,23 @@ msgid "Moravian-Silesian Region" msgstr "" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "" -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "" - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "" #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "" -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "" @@ -2273,12 +2284,12 @@ msgid "Thuringia" msgstr "" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "" -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2551,71 +2562,503 @@ msgid "Valencian Community" msgstr "" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "" -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." msgstr "" -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "" -#: contrib/localflavor/es/forms.py:67 -msgid "Please enter a valid NIF or NIE." -msgstr "" - #: contrib/localflavor/es/forms.py:68 -msgid "Invalid checksum for NIF." +msgid "Please enter a valid NIF or NIE." msgstr "" #: contrib/localflavor/es/forms.py:69 -msgid "Invalid checksum for NIE." +msgid "Invalid checksum for NIF." msgstr "" #: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "" -#: contrib/localflavor/es/forms.py:142 -msgid "" -"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "" - #: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "" -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "" -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "" -#: contrib/localflavor/is_/forms.py:17 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "" - #: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "" -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "" -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "" -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "" @@ -2811,6 +3254,10 @@ msgid "Okinawa" msgstr "" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "" @@ -2939,15 +3386,11 @@ msgid "Zacatecas" msgstr "" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "" @@ -2999,15 +3442,15 @@ msgid "Zuid-Holland" msgstr "" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "" -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "" -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "" @@ -3104,6 +3547,14 @@ msgid "West Pomerania" msgstr "" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "" @@ -3124,6 +3575,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "" @@ -3756,19 +4307,43 @@ msgid "Wales" msgstr "" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "" -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Држава у САД (два велика слова)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Број телефона" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "" @@ -3808,6 +4383,10 @@ msgid "Western Cape" msgstr "" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "порука" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "преусмерен са" @@ -3872,59 +4451,220 @@ msgid "sites" msgstr "сајтови" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Ова вредност мора бити целобројна." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Ова вредност мора бити True или False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Унесите исправну вредност." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Унесите исправан URL." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Овај URL изгледа не води никуда." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Унесите исрпаван „слаг“, који се састоји од слова, бројки, доњих црта или " +"циртица." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Унесите исправну IPv4 адресу." + +#: core/validators.py:129 db/models/fields/__init__.py:585 +msgid "Enter only digits separated by commas." +msgstr "Унесите само бројке раздвојене запетама." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Ово поље мора да буде %(limit_value)s (тренутно има %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Ова вредност мора да буде мања од %(limit_value)s. или тачно толико." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Ова вредност мора бити већа од %(limit_value)s или тачно толико." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Ово поље мора садржати најмање %(limit_value)d словних места (тренутно има %" +"(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Ово поље мора садржати највише %(limit_value)d словних места (тренутно има %" +"(show_value)d)." + +#: db/models/base.py:818 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s мора да буде јединствен за %(date_field)s %(lookup)s." + +#: db/models/base.py:833 db/models/base.py:841 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s са овом вредношћу %(field_label)s већ постоји." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Вредност %r није дозвољена." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Ово поље не може остати празно." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Унесите само бројке раздвојене запетама." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Ово поље не може остати празно." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Поње типа: %(field_type)s" + +#: db/models/fields/__init__.py:464 db/models/fields/__init__.py:865 +#: db/models/fields/__init__.py:974 db/models/fields/__init__.py:985 +#: db/models/fields/__init__.py:1012 +msgid "Integer" +msgstr "Цео број" + +#: db/models/fields/__init__.py:468 db/models/fields/__init__.py:863 +msgid "This value must be an integer." +msgstr "Ова вредност мора бити целобројна." + +#: db/models/fields/__init__.py:503 +msgid "This value must be either True or False." +msgstr "Ова вредност мора бити True или False." + +#: db/models/fields/__init__.py:505 +msgid "Boolean (Either True or False)" +msgstr "Булова вредност (True или False)" + +#: db/models/fields/__init__.py:552 db/models/fields/__init__.py:995 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Стринг (највише %(max_length)s знакова)" + +#: db/models/fields/__init__.py:580 +msgid "Comma-separated integers" +msgstr "Цели бројеви раздвојени запетама" + +#: db/models/fields/__init__.py:594 +msgid "Date (without time)" +msgstr "Датум (без времена)" + +#: db/models/fields/__init__.py:598 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Унесите исправан датум у формату ГГГГ-ММ-ДД." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:599 #, python-format msgid "Invalid date: %s" msgstr "Неисправан датум: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:680 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Унесите исправан датум/време у формату ГГГГ-ММ-ДД ЧЧ:ММ[:сс[.уууууу]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:682 +msgid "Date (with time)" +msgstr "Датум (са временом)" + +#: db/models/fields/__init__.py:748 msgid "This value must be a decimal number." msgstr "Ова вредност мора бити децимални број" -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:750 +msgid "Decimal number" +msgstr "Децимални број" + +#: db/models/fields/__init__.py:805 +msgid "E-mail address" +msgstr "Имејл адреса" + +#: db/models/fields/__init__.py:812 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Путања фајла" + +#: db/models/fields/__init__.py:835 msgid "This value must be a float." msgstr "Ова вредност мора бити број са клизећом запетом" -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:837 +msgid "Floating point number" +msgstr "Број са покреном запетом" + +#: db/models/fields/__init__.py:896 +msgid "Big (8 byte) integer" +msgstr "Велики цео број" + +#: db/models/fields/__init__.py:925 msgid "This value must be either None, True or False." msgstr "Ова вредност мора бити или None, или True, или False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:927 +msgid "Boolean (Either True, False or None)" +msgstr "Булова вредност (True, False или None)" + +#: db/models/fields/__init__.py:1018 +msgid "Text" +msgstr "Текст" + +#: db/models/fields/__init__.py:1034 +msgid "Time" +msgstr "Време" + +#: db/models/fields/__init__.py:1038 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Унесите исправно време у формату ЧЧ:ММ[:сс[.уууууу]]." -#: db/models/fields/related.py:792 +#: db/models/fields/__init__.py:1122 +msgid "XML text" +msgstr "XML текст" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Објекат класе %(model)s са примарним кључем %(pk)r не постоји." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Страни кључ (тип одређује референтно поље)" + +#: db/models/fields/related.py:923 +msgid "One-to-one relationship" +msgstr "Релација један на један" + +#: db/models/fields/related.py:983 +msgid "Many-to-many relationship" +msgstr "Релација више на више" + +#: db/models/fields/related.py:1003 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Држите „Control“, или „Command“ на Mac-у да бисте обележили више од једне " "ставке." -#: db/models/fields/related.py:870 +#: db/models/fields/related.py:1064 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3933,86 +4673,58 @@ msgstr[1] "Унесите исправан %(self)s IDs. Вредности %(value)r су неисправне." msgstr[2] "Унесите исправан %(self)s IDs. Вредности %(value)r су неисправне." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Ово поље се мора попунити." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Унесите исправну вредност." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Ово поље мора садржати највише %(max)d словних места (тренутно има %(length)" -"d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Ово поље мора садржати најмање %(min)d словних места (тренутно има %(length)" -"d." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Унесите цео број." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Ова вредност мора да буде мања од %s или тачно толико." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Ова вредност мора бити већа од %s или тачно толико." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Унесите број." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Не сме бити укупно више од %s цифара. Проверите." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Не сме бити укупно више од %s децималних места. Проверите." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Не сме бити укупно више од %s цифара пре запете. Проверите." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Унесите исправан датум." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Унесите исправно време" -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Унесите исправан датум/време." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Фајл није пребачен. Проверите тип енкодирања формулара." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Фајл није пребачен." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Пребачен фајл је празан." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4020,7 +4732,7 @@ "Назив фајла мора да садржи бар %(max)d словних места (тренутно има %(length)" "d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4028,61 +4740,32 @@ "Пребаците исправан фајл. Фајл који је пребачен или није слика, или је " "оштећен." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Унесите исправан URL." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Овај URL изгледа не води никуда." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "%(value)s није међу понуђеним вредностима. Одаберите једну од понуђених." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:962 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:995 msgid "Enter a list of values." msgstr "Унесите листу вредности." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Унесите исправну IPv4 адресу." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Унесите исрпаван „слаг“, који се састоји од слова, бројки, доњих црта или " -"циртица." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Редослед" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s мора да буде јединствен за %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s са овом вредношћу %(field_label)s већ постоји." - -#: forms/models.py:581 +#: forms/models.py:556 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Исправите дуплиран садржај за поља: %(field)s." -#: forms/models.py:585 +#: forms/models.py:560 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" "Исправите дуплиран садржај за поља: %(field)s, који мора да буде јединствен." -#: forms/models.py:591 +#: forms/models.py:566 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4091,33 +4774,33 @@ "Исправите дуплиран садржај за поља: %(field_name)s, који мора да буде " "јединствен за %(lookup)s у %(date_field)s." -#: forms/models.py:599 +#: forms/models.py:574 msgid "Please correct the duplicate values below." msgstr "Исправите дуплиране вредности доле." -#: forms/models.py:837 +#: forms/models.py:848 msgid "The inline foreign key did not match the parent instance primary key." msgstr "Страни кључ се није поклопио са инстанцом родитељског кључа." -#: forms/models.py:892 +#: forms/models.py:914 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Одабрана вредност није међу понуђенима. Одаберите једну од понуђених." -#: forms/models.py:963 +#: forms/models.py:996 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "%s није међу понуђеним вредностима. Одаберите једну од понуђених." -#: forms/models.py:965 +#: forms/models.py:998 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "„%s“ није исправна вредност за примарни кључ." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "да,не,можда" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" @@ -4125,17 +4808,17 @@ msgstr[1] "%(size)d бајта" msgstr[2] "%(size)d бајтова" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4344,7 +5027,7 @@ msgid "Dec." msgstr "дец." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "или" @@ -4404,33 +5087,37 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" -msgstr "j. N Y." - -#: utils/translation/trans_real.py:401 +msgstr "j. F Y." + +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. F Y. H:i Т" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "G:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y." -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s је успешно креиран." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s је успешно ажуриран." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s је обрисан." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sr/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,44 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y.' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j. F Y. H:i' +YEAR_MONTH_FORMAT = 'F Y.' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j.m.Y.' +SHORT_DATETIME_FORMAT = 'j.m.Y. H:i' +FIRST_DAY_OF_WEEK = 1 +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', # '2006-10-25' + '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.' + '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.' + # '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.' + # '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.' + # '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59' + '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30' + '%d.%m.%Y.', # '25.10.2006.' + '%d.%m.%y. %H:%M:%S', # '25.10.06. 14:30:59' + '%d.%m.%y. %H:%M', # '25.10.06. 14:30' + '%d.%m.%y.', # '25.10.06.' + '%d. %m. %Y. %H:%M:%S', # '25. 10. 2006. 14:30:59' + '%d. %m. %Y. %H:%M', # '25. 10. 2006. 14:30' + '%d. %m. %Y.', # '25. 10. 2006.' + '%d. %m. %y. %H:%M:%S', # '25. 10. 06. 14:30:59' + '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30' + '%d. %m. %y.', # '25. 10. 06.' +) +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr_Latn/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/sr_Latn/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/sr_Latn/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-08 22:50+0200\n" -"PO-Revision-Date: 2009-04-01 18:38+0200\n" +"POT-Creation-Date: 2010-04-16 00:11+0200\n" +"PO-Revision-Date: 2010-03-23 23:49+0100\n" "Last-Translator: Janos Guljas \n" "Language-Team: Branko Vukelic & Janos Guljas " " & Nesh & Petar %(username)s." msgstr "Unesite novu lozinku za korisnika %(username)s." +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Lozinka" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Lozinka (ponovite)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Radi provere tačnosti ponovo unesite lozinku koju ste uneli gore." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Dodaj još jedan objekat klase %(verbose_name)s." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Obriši" + #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" msgstr "Brisanje?" @@ -838,9 +887,9 @@ msgstr "Ponovna prijava" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" msgstr "Izmena lozinke" @@ -853,7 +902,7 @@ msgid "Your password was changed." msgstr "Vaša lozinka je izmenjena." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/admin/templates/registration/password_change_form.html:21 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." @@ -861,21 +910,17 @@ "Iz bezbednosnih razloga prvo unesite svoju staru lozinku, a novu zatim " "unesite dva puta da bismo mogli da proverimo da li ste je pravilno uneli." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Stara lozinka:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Nova lozinka:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Potvrda lozinke:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Stara lozinka" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Nova lozinka" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" msgstr "Izmeni moju lozinku" @@ -914,6 +959,14 @@ "Unesite novu lozinku dva puta kako bismo mogli da proverimo da li ste je " "pravilno uneli." +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Nova lozinka:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Potvrda lozinke:" + #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Resetovanje lozinke neuspešno" @@ -936,8 +989,8 @@ "We've e-mailed you instructions for setting your password to the e-mail " "address you submitted. You should be receiving it shortly." msgstr "" -"Poslali smo uputstva za postavljanje nove lozinke na imejl adresu koju ste nam " -"dali. Uputstva ćete dobiti uskoro." +"Poslali smo uputstva za postavljanje nove lozinke na imejl adresu koju ste " +"nam dali. Uputstva ćete dobiti uskoro." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -981,7 +1034,7 @@ msgid "Reset my password" msgstr "Resetuj moju lozinku" -#: contrib/admin/templatetags/admin_list.py:299 +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Svi datumi" @@ -995,158 +1048,77 @@ msgid "Select %s to change" msgstr "Odaberi objekat klase %s za izmenu" -#: contrib/admin/views/template.py:37 contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "sajt" -#: contrib/admin/views/template.py:39 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "templejt" -#: contrib/admindocs/views.py:58 contrib/admindocs/views.py:60 -#: contrib/admindocs/views.py:62 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "tag:" -#: contrib/admindocs/views.py:91 contrib/admindocs/views.py:93 -#: contrib/admindocs/views.py:95 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filter:" -#: contrib/admindocs/views.py:155 contrib/admindocs/views.py:157 -#: contrib/admindocs/views.py:159 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" msgstr "vju:" -#: contrib/admindocs/views.py:187 +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "Aplikacija %r nije pronađena" -#: contrib/admindocs/views.py:194 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "Model %(model_name)r nije pronađen u aplikaciji %(app_label)r" -#: contrib/admindocs/views.py:206 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "povezani objekti klase `%(app_label)s.%(data_type)s`" -#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228 -#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" # WARN: possible breakage in future # This string is interpolated in strings below, which can cause breakage in # future releases. -#: contrib/admindocs/views.py:237 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "klase `%(app_label)s.%(object_name)s`" # WARN: possible breakage in future -#: contrib/admindocs/views.py:242 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "svi povezani objekti %s" # WARN: possible breakage in future -#: contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "broj povezanih objekata %s" # WARN: possible breakage in future -#: contrib/admindocs/views.py:252 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "Polja u povezanim objektima %s" -#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326 -#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337 -msgid "Integer" -msgstr "Ceo broj" - -#: contrib/admindocs/views.py:316 -msgid "Boolean (Either True or False)" -msgstr "Bulova vrednost (True ili False)" - -#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "String (najviše %(max_length)s znakova)" - -#: contrib/admindocs/views.py:318 -msgid "Comma-separated integers" -msgstr "Celi brojevi razdvojeni zapetama" - -#: contrib/admindocs/views.py:319 -msgid "Date (without time)" -msgstr "Datum (bez vremena)" - -#: contrib/admindocs/views.py:320 -msgid "Date (with time)" -msgstr "Datum (sa vremenom)" - -#: contrib/admindocs/views.py:321 -msgid "Decimal number" -msgstr "Decimalni broj" - -#: contrib/admindocs/views.py:322 -msgid "E-mail address" -msgstr "Imejl adresa" - -#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324 -#: contrib/admindocs/views.py:327 -msgid "File path" -msgstr "Putanja fajla" - -#: contrib/admindocs/views.py:325 -msgid "Floating point number" -msgstr "Broj sa pokrenom zapetom" - -#: contrib/admindocs/views.py:329 contrib/comments/models.py:60 -msgid "IP address" -msgstr "IP adresa" - -#: contrib/admindocs/views.py:331 -msgid "Boolean (Either True, False or None)" -msgstr "Bulova vrednost (True, False ili None)" - -#: contrib/admindocs/views.py:332 -msgid "Relation to parent model" -msgstr "Veza sa roditeljskim modelom" - -#: contrib/admindocs/views.py:333 -msgid "Phone number" -msgstr "Broj telefona" - -#: contrib/admindocs/views.py:338 -msgid "Text" -msgstr "Tekst" - -#: contrib/admindocs/views.py:339 -msgid "Time" -msgstr "Vreme" - -#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95 -#: contrib/comments/templates/comments/moderation_queue.html:37 -#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:341 -msgid "U.S. state (two uppercase letters)" -msgstr "Država u SAD (dva velika slova)" - -#: contrib/admindocs/views.py:342 -msgid "XML text" -msgstr "XML tekst" - -#: contrib/admindocs/views.py:368 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ne izgleda kao urlpattern objekat" @@ -1219,78 +1191,75 @@ msgstr "" "Isto kao prethodni, ali otvara administracionu stranicu u novom prozoru." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Lični podaci" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "Dozvole" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Važni datumi" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Grupe" -#: contrib/auth/admin.py:80 -msgid "Add user" -msgstr "Dodaj korisnika" - -#: contrib/auth/admin.py:106 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." msgstr "Lozinka uspešno izmenjena." -#: contrib/auth/admin.py:112 +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" msgstr "Izmeni lozinku: %s" -#: contrib/auth/forms.py:15 contrib/auth/forms.py:48 -#: contrib/auth/models.py:128 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Korisnik" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" "Neophodno. Najviše 30 slovnih mesta. Samo alfanumerički znaci (slova, brojke " -"i donja crta)." - -#: contrib/auth/forms.py:16 contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Ova vrednost može sadržati samo slova, brojke i donje crte." +"i @/./+/-/_)." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Ova vrednost može sadržati samo slova, brojke i @/./+/-/_." #: contrib/auth/forms.py:18 msgid "Password confirmation" msgstr "Potvrda lozinke" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Korisnik sa tim korisničkim imenom već postoji." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:155 -#: contrib/auth/forms.py:197 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." msgstr "Dva polja za lozinke se nisu poklopila." -#: contrib/auth/forms.py:82 +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Ovaj nalog je neaktivan." -#: contrib/auth/forms.py:87 +#: contrib/auth/forms.py:88 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." msgstr "" -"Izgleda da su kolačići isključeni u vašem brauzeru. Oni moraju biti uključeni " -"da bi ste se prijavili." - -#: contrib/auth/forms.py:100 +"Izgleda da su kolačići isključeni u vašem brauzeru. Oni moraju biti " +"uključeni da bi ste se prijavili." + +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "Imejl adresa" -#: contrib/auth/forms.py:109 +#: contrib/auth/forms.py:110 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" @@ -1298,72 +1267,71 @@ "Ta imejl adresa nije u vezi ni sa jednim nalogom. Da li ste sigurni da ste " "se već registrovali?" -#: contrib/auth/forms.py:135 +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" msgstr "Resetovanje lozinke na %s" -#: contrib/auth/forms.py:143 -msgid "New password" -msgstr "Nova lozinka" - -#: contrib/auth/forms.py:144 +#: contrib/auth/forms.py:145 msgid "New password confirmation" msgstr "Potvrda nove lozinke" -#: contrib/auth/forms.py:169 -msgid "Old password" -msgstr "Stara lozinka" - -#: contrib/auth/forms.py:177 +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Vaša stara loznka nije pravilno unesena. Unesite je ponovo." -#: contrib/auth/models.py:63 contrib/auth/models.py:86 +#: contrib/auth/models.py:66 contrib/auth/models.py:94 msgid "name" msgstr "ime" -#: contrib/auth/models.py:65 +#: contrib/auth/models.py:68 msgid "codename" msgstr "šifra dozvole" -#: contrib/auth/models.py:68 +#: contrib/auth/models.py:72 msgid "permission" msgstr "dozvola" -#: contrib/auth/models.py:69 contrib/auth/models.py:87 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "dozvole" -#: contrib/auth/models.py:90 +#: contrib/auth/models.py:98 msgid "group" msgstr "grupa" -#: contrib/auth/models.py:91 contrib/auth/models.py:138 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "grupe" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:196 msgid "username" msgstr "korisničko ime" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Neophodno. Najviše 30 slovnih mesta. Samo alfanumerički znaci (slova, brojke " +"i @/./+/-/_)." + +#: contrib/auth/models.py:197 msgid "first name" msgstr "ime" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:198 msgid "last name" msgstr "prezime" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "imejl adresa" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "password" msgstr "lozinka" -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:200 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1371,20 +1339,20 @@ "Koristite '[algo]$[salt]$[hexdigest]' ili formular za " "unos lozinke." -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "staff status" msgstr "status člana posade" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." msgstr "" "Označava da li korisnik može da se prijavi na ovaj sajt za administraciju." -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "active" msgstr "aktivan" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:202 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -1392,26 +1360,27 @@ "Označava da li se korisnik smatra aktivnim. Deselektujte ovo umesto da " "brišete nalog." -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "superuser status" msgstr "status administratora" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:203 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" -"Označava da li korisnik ima sve dozvole bez dodeljivanja pojedinačnih dozvola." - -#: contrib/auth/models.py:136 +"Označava da li korisnik ima sve dozvole bez dodeljivanja pojedinačnih " +"dozvola." + +#: contrib/auth/models.py:204 msgid "last login" msgstr "poslednja prijava" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "datum registracije" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:207 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1419,39 +1388,81 @@ "Pored ručno dodeljenih dozvola, ovaj korisnik će imati i dozvole dodeljene " "gurpama kojima pripada." -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "korisničke dozvole" -#: contrib/auth/models.py:144 contrib/comments/models.py:50 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 #: contrib/comments/models.py:168 msgid "user" msgstr "korisnik" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:213 msgid "users" msgstr "korisnici" -#: contrib/auth/models.py:301 +#: contrib/auth/models.py:394 msgid "message" msgstr "poruka" -#: contrib/auth/views.py:56 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Odjavljen" -#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429 +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Unesite važeću imejl adresu." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "Sadržaj" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Metapodaci" +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "označen" +msgstr[1] "označena" +msgstr[2] "označenih" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Označavanje izabranih komentara" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "odobren" +msgstr[1] "odobrena" +msgstr[2] "odobrenih" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Odobrenje izabranih komentara" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "uklonjen" +msgstr[1] "uklonjena" +msgstr[2] "uklonjenih" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Obriši izabrane komentare" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "Nad jednim komentarom je uspešno urađeno: %(action)s." +msgstr[1] "Nad %(count)s komentara je uspešno urađeno: %(action)s." +msgstr[2] "Nad %(count)s komentara je uspešno urađeno: %(action)s." + #: contrib/comments/feeds.py:13 #, python-format msgid "%(site_name)s comments" @@ -1463,7 +1474,6 @@ msgstr "Skoriji komentari na sajtu %(site_name)s" #: contrib/comments/forms.py:93 -#: contrib/comments/templates/comments/moderation_queue.html:34 msgid "Name" msgstr "Ime" @@ -1471,12 +1481,16 @@ msgid "Email address" msgstr "Imejl adresa" +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1114 +msgid "URL" +msgstr "URL" + #: contrib/comments/forms.py:96 -#: contrib/comments/templates/comments/moderation_queue.html:35 msgid "Comment" msgstr "Komentari" -#: contrib/comments/forms.py:173 +#: contrib/comments/forms.py:175 #, 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." @@ -1484,12 +1498,12 @@ msgstr[1] "Pazi na jezik! Reči „%s“ ovde nisu dozvoljene." msgstr[2] "Pazi na jezik! Reči „%s“ ovde nisu dozvoljene." -#: contrib/comments/forms.py:180 +#: contrib/comments/forms.py:182 msgid "" "If you enter anything in this field your comment will be treated as spam" msgstr "Ako išta unesete u ovo polje, Vaš komentar će se smatrati spamom." -#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74 +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 msgid "content type" msgstr "tip sadržaja" @@ -1518,6 +1532,10 @@ msgid "date/time submitted" msgstr "datum/vreme postavljanja" +#: contrib/comments/models.py:60 db/models/fields/__init__.py:909 +msgid "IP address" +msgstr "IP adresa" + #: contrib/comments/models.py:61 msgid "is public" msgstr "javno" @@ -1537,8 +1555,8 @@ "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Obeležite ovu kućicu ako je komentar neprikladan. Poruka o uklanjanju će biti " -"prikazana umesto komentara." +"Obeležite ovu kućicu ako je komentar neprikladan. Poruka o uklanjanju će " +"biti prikazana umesto komentara." #: contrib/comments/models.py:77 msgid "comments" @@ -1557,8 +1575,8 @@ "This comment was posted by an authenticated user and thus the email is read-" "only." msgstr "" -"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imejl adresom " -"zaključano." +"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imejl " +"adresom zaključano." #: contrib/comments/models.py:153 #, python-format @@ -1600,7 +1618,6 @@ msgstr "Da li zaista želite da označite ovaj komentar javnim?" #: contrib/comments/templates/comments/approve.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:49 msgid "Approve" msgstr "Odobri" @@ -1623,11 +1640,6 @@ msgid "Really remove this comment?" msgstr "Da li zaista želite da obrišete ovaj komentar?" -#: contrib/comments/templates/comments/delete.html:12 -#: contrib/comments/templates/comments/moderation_queue.html:53 -msgid "Remove" -msgstr "Obriši" - #: contrib/comments/templates/comments/deleted.html:4 msgid "Thanks for removing" msgstr "Hvala što koristite naš sajt!" @@ -1658,39 +1670,6 @@ msgid "Preview" msgstr "Pregled" -#: contrib/comments/templates/comments/moderation_queue.html:4 -#: contrib/comments/templates/comments/moderation_queue.html:19 -msgid "Comment moderation queue" -msgstr "Komentari koji čekaju na odobrenje" - -#: contrib/comments/templates/comments/moderation_queue.html:26 -msgid "No comments to moderate" -msgstr "Nema komentara na čekanju" - -#: contrib/comments/templates/comments/moderation_queue.html:36 -msgid "Email" -msgstr "Imejl adresa" - -#: contrib/comments/templates/comments/moderation_queue.html:38 -msgid "Authenticated?" -msgstr "Prijavljen?" - -#: contrib/comments/templates/comments/moderation_queue.html:39 -msgid "IP Address" -msgstr "IP adresa" - -#: contrib/comments/templates/comments/moderation_queue.html:40 -msgid "Date posted" -msgstr "Datum postavljanja" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "yes" -msgstr "da" - -#: contrib/comments/templates/comments/moderation_queue.html:63 -msgid "no" -msgstr "ne" - #: contrib/comments/templates/comments/posted.html:4 msgid "Thanks for commenting" msgstr "Hvala na komentaru" @@ -1719,11 +1698,11 @@ msgid "or make changes" msgstr "ili izvrši izmene" -#: contrib/contenttypes/models.py:70 +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "ime python klase modela" -#: contrib/contenttypes/models.py:75 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "tipovi sadržaja" @@ -1777,7 +1756,8 @@ #: contrib/flatpages/models.py:13 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -"Ako je ovo obeleženo, samo će prijavljeni korisnici moći da vide ovu stranicu." +"Ako je ovo obeleženo, samo će prijavljeni korisnici moći da vide ovu " +"stranicu." #: contrib/flatpages/models.py:18 msgid "flat page" @@ -1787,7 +1767,7 @@ msgid "flat pages" msgstr "flet stranice" -#: contrib/formtools/wizard.py:130 +#: contrib/formtools/wizard.py:140 msgid "" "We apologize, but your form has expired. Please continue filling out the " "form from this page." @@ -1795,6 +1775,39 @@ "Žao nam je, ali Vaša sesija je istekla. Popunjavanje formulara nastavite na " "ovoj stranici." +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Osnovno „GIS“ polje koje mapira tip geometrije po „OpenGIS“ specifikaciji." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Tačka" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Linija" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Poligon" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Više tačaka" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Više linija" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Više poligona" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Kolekcija geopmetrijskih oblika" + #: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Niste zadali parametre za geometriju." @@ -1811,7 +1824,7 @@ msgid "" "An error occurred when transforming the geometry to the SRID of the geometry " "form field." -msgstr "" +msgstr "Greška se desila tokom transformacije geometrije na „SRID“ tip polja." #: contrib/humanize/templatetags/humanize.py:19 msgid "th" @@ -1901,25 +1914,25 @@ msgid "yesterday" msgstr "juče" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Unesite poštanski broj u formatu NNNN ili ANNNNAAA." -#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Ovo polje mora sadržati samo brojke." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Ovo polje mora sadržati 7 ili 8 cifara" -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "Unestie važeći CUIT u formatu XX-XXXXXXXX-X or XXXXXXXXXXXX." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Nevažeći CUIT" @@ -1959,8 +1972,8 @@ msgid "Vienna" msgstr "Beč" -#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "Unesite poštanski broj u formatu XXXX." @@ -1969,45 +1982,45 @@ msgstr "" "Unesite važeći austrijski broj socijalnog osiguranja u formatu XXXX XXXXXX." -#: contrib/localflavor/au/forms.py:16 +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "Unesite četvorocifreni poštanski broj" -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Unesite poštanski broj u formatu XXXXX-XXX." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Broj telefona mora biti u formatu XX-XXXX-XXXX." -#: contrib/localflavor/br/forms.py:58 +#: contrib/localflavor/br/forms.py:59 msgid "" "Select a valid brazilian state. That state is not one of the available " "states." msgstr "Odaberite postojeću brazilsku državu. Ta država nije među ponuđenima." -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Nevažeći CPF broj" -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "" -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "" -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "" -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" @@ -2115,21 +2128,21 @@ msgid "Zurich" msgstr "" -#: contrib/localflavor/ch/forms.py:64 +#: contrib/localflavor/ch/forms.py:65 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." msgstr "" -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "" -#: contrib/localflavor/cl/forms.py:30 -msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "" - #: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "" @@ -2189,23 +2202,23 @@ msgid "Moravian-Silesian Region" msgstr "" -#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30 +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "" -#: contrib/localflavor/cz/forms.py:47 -msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." -msgstr "" - #: contrib/localflavor/cz/forms.py:48 -msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." msgstr "" #: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 msgid "Enter a valid birth number." msgstr "" -#: contrib/localflavor/cz/forms.py:106 +#: contrib/localflavor/cz/forms.py:107 msgid "Enter a valid IC number." msgstr "" @@ -2273,12 +2286,12 @@ msgid "Thuringia" msgstr "" -#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "" -#: contrib/localflavor/de/forms.py:41 +#: contrib/localflavor/de/forms.py:42 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." @@ -2551,71 +2564,503 @@ msgid "Valencian Community" msgstr "" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "" -#: contrib/localflavor/es/forms.py:39 +#: contrib/localflavor/es/forms.py:40 msgid "" "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " "9XXXXXXXX." msgstr "" -#: contrib/localflavor/es/forms.py:66 +#: contrib/localflavor/es/forms.py:67 msgid "Please enter a valid NIF, NIE, or CIF." msgstr "" -#: contrib/localflavor/es/forms.py:67 -msgid "Please enter a valid NIF or NIE." -msgstr "" - #: contrib/localflavor/es/forms.py:68 -msgid "Invalid checksum for NIF." +msgid "Please enter a valid NIF or NIE." msgstr "" #: contrib/localflavor/es/forms.py:69 -msgid "Invalid checksum for NIE." +msgid "Invalid checksum for NIF." msgstr "" #: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "" -#: contrib/localflavor/es/forms.py:142 -msgid "" -"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "" - #: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "" -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "" -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "" -#: contrib/localflavor/is_/forms.py:17 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "" - #: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "" -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "" -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "" -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "" @@ -2811,6 +3256,10 @@ msgid "Okinawa" msgstr "" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "" @@ -2939,15 +3388,11 @@ msgid "Zacatecas" msgstr "" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "" @@ -2999,15 +3444,15 @@ msgid "Zuid-Holland" msgstr "" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "" -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "" -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "" @@ -3104,6 +3549,14 @@ msgid "West Pomerania" msgstr "" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "" @@ -3124,6 +3577,106 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "" +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "" @@ -3756,19 +4309,43 @@ msgid "Wales" msgstr "" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "" -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" -#: contrib/localflavor/za/forms.py:20 +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Država u SAD (dva velika slova)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Broj telefona" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "" @@ -3808,6 +4385,10 @@ msgid "Western Cape" msgstr "" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "poruka" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "preusmeren sa" @@ -3872,59 +4453,220 @@ msgid "sites" msgstr "sajtovi" -#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710 -msgid "This value must be an integer." -msgstr "Ova vrednost mora biti celobrojna." - -#: db/models/fields/__init__.py:388 -msgid "This value must be either True or False." -msgstr "Ova vrednost mora biti True ili False." - -#: db/models/fields/__init__.py:427 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Unesite ispravnu vrednost." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Unesite ispravan URL." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Ovaj URL izgleda ne vodi nikuda." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Unesite isrpavan „slag“, koji se sastoji od slova, brojki, donjih crta ili " +"cirtica." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Unesite ispravnu IPv4 adresu." + +#: core/validators.py:129 db/models/fields/__init__.py:585 +msgid "Enter only digits separated by commas." +msgstr "Unesite samo brojke razdvojene zapetama." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Ovo polje mora da bude %(limit_value)s (trenutno ima %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Ova vrednost mora da bude manja od %(limit_value)s. ili tačno toliko." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Ova vrednost mora biti veća od %(limit_value)s ili tačno toliko." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Ovo polje mora sadržati najmanje %(limit_value)d slovnih mesta (trenutno ima " +"%(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Ovo polje mora sadržati najviše %(limit_value)d slovnih mesta (trenutno ima %" +"(show_value)d)." + +#: db/models/base.py:818 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s." + +#: db/models/base.py:833 db/models/base.py:841 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s sa ovom vrednošću %(field_label)s već postoji." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "Vrednost %r nije dozvoljena." + +#: db/models/fields/__init__.py:64 msgid "This field cannot be null." msgstr "Ovo polje ne može ostati prazno." -#: db/models/fields/__init__.py:443 -msgid "Enter only digits separated by commas." -msgstr "Unesite samo brojke razdvojene zapetama." - -#: db/models/fields/__init__.py:474 +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Ovo polje ne može ostati prazno." + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Ponje tipa: %(field_type)s" + +#: db/models/fields/__init__.py:464 db/models/fields/__init__.py:865 +#: db/models/fields/__init__.py:974 db/models/fields/__init__.py:985 +#: db/models/fields/__init__.py:1012 +msgid "Integer" +msgstr "Ceo broj" + +#: db/models/fields/__init__.py:468 db/models/fields/__init__.py:863 +msgid "This value must be an integer." +msgstr "Ova vrednost mora biti celobrojna." + +#: db/models/fields/__init__.py:503 +msgid "This value must be either True or False." +msgstr "Ova vrednost mora biti True ili False." + +#: db/models/fields/__init__.py:505 +msgid "Boolean (Either True or False)" +msgstr "Bulova vrednost (True ili False)" + +#: db/models/fields/__init__.py:552 db/models/fields/__init__.py:995 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "String (najviše %(max_length)s znakova)" + +#: db/models/fields/__init__.py:580 +msgid "Comma-separated integers" +msgstr "Celi brojevi razdvojeni zapetama" + +#: db/models/fields/__init__.py:594 +msgid "Date (without time)" +msgstr "Datum (bez vremena)" + +#: db/models/fields/__init__.py:598 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Unesite ispravan datum u formatu GGGG-MM-DD." -#: db/models/fields/__init__.py:483 +#: db/models/fields/__init__.py:599 #, python-format msgid "Invalid date: %s" msgstr "Neispravan datum: %s" -#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:680 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." msgstr "Unesite ispravan datum/vreme u formatu GGGG-MM-DD ČČ:MM[:ss[.uuuuuu]." -#: db/models/fields/__init__.py:601 +#: db/models/fields/__init__.py:682 +msgid "Date (with time)" +msgstr "Datum (sa vremenom)" + +#: db/models/fields/__init__.py:748 msgid "This value must be a decimal number." msgstr "Ova vrednost mora biti decimalni broj" -#: db/models/fields/__init__.py:686 +#: db/models/fields/__init__.py:750 +msgid "Decimal number" +msgstr "Decimalni broj" + +#: db/models/fields/__init__.py:805 +msgid "E-mail address" +msgstr "Imejl adresa" + +#: db/models/fields/__init__.py:812 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Putanja fajla" + +#: db/models/fields/__init__.py:835 msgid "This value must be a float." msgstr "Ova vrednost mora biti broj sa klizećom zapetom" -#: db/models/fields/__init__.py:746 +#: db/models/fields/__init__.py:837 +msgid "Floating point number" +msgstr "Broj sa pokrenom zapetom" + +#: db/models/fields/__init__.py:896 +msgid "Big (8 byte) integer" +msgstr "Veliki ceo broj" + +#: db/models/fields/__init__.py:925 msgid "This value must be either None, True or False." msgstr "Ova vrednost mora biti ili None, ili True, ili False." -#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863 +#: db/models/fields/__init__.py:927 +msgid "Boolean (Either True, False or None)" +msgstr "Bulova vrednost (True, False ili None)" + +#: db/models/fields/__init__.py:1018 +msgid "Text" +msgstr "Tekst" + +#: db/models/fields/__init__.py:1034 +msgid "Time" +msgstr "Vreme" + +#: db/models/fields/__init__.py:1038 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "Unesite ispravno vreme u formatu ČČ:MM[:ss[.uuuuuu]]." -#: db/models/fields/related.py:792 +#: db/models/fields/__init__.py:1122 +msgid "XML text" +msgstr "XML tekst" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Objekat klase %(model)s sa primarnim ključem %(pk)r ne postoji." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Strani ključ (tip određuje referentno polje)" + +#: db/models/fields/related.py:923 +msgid "One-to-one relationship" +msgstr "Relacija jedan na jedan" + +#: db/models/fields/related.py:983 +msgid "Many-to-many relationship" +msgstr "Relacija više na više" + +#: db/models/fields/related.py:1003 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Držite „Control“, ili „Command“ na Mac-u da biste obeležili više od jedne " "stavke." -#: db/models/fields/related.py:870 +#: db/models/fields/related.py:1064 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -3933,86 +4675,58 @@ msgstr[1] "Unesite ispravan %(self)s IDs. Vrednosti %(value)r su neispravne." msgstr[2] "Unesite ispravan %(self)s IDs. Vrednosti %(value)r su neispravne." -#: forms/fields.py:54 +#: forms/fields.py:65 msgid "This field is required." msgstr "Ovo polje se mora popuniti." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Unesite ispravnu vrednost." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Ovo polje mora sadržati najviše %(max)d slovnih mesta (trenutno ima %(length)" -"d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Ovo polje mora sadržati najmanje %(min)d slovnih mesta (trenutno ima %(length)" -"d." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Unesite ceo broj." -#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Ova vrednost mora da bude manja od %s ili tačno toliko." - -#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Ova vrednost mora biti veća od %s ili tačno toliko." - -#: forms/fields.py:195 forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Unesite broj." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Ne sme biti ukupno više od %s cifara. Proverite." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Ne sme biti ukupno više od %s decimalnih mesta. Proverite." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Ne sme biti ukupno više od %s cifara pre zapete. Proverite." -#: forms/fields.py:288 forms/fields.py:863 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Unesite ispravan datum." -#: forms/fields.py:322 forms/fields.py:864 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Unesite ispravno vreme" -#: forms/fields.py:361 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Unesite ispravan datum/vreme." -#: forms/fields.py:447 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Fajl nije prebačen. Proverite tip enkodiranja formulara." -#: forms/fields.py:448 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Fajl nije prebačen." -#: forms/fields.py:449 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Prebačen fajl je prazan." -#: forms/fields.py:450 +#: forms/fields.py:438 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -4020,7 +4734,7 @@ "Naziv fajla mora da sadrži bar %(max)d slovnih mesta (trenutno ima %(length)" "d)." -#: forms/fields.py:483 +#: forms/fields.py:473 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -4028,61 +4742,32 @@ "Prebacite ispravan fajl. Fajl koji je prebačen ili nije slika, ili je " "oštećen." -#: forms/fields.py:544 -msgid "Enter a valid URL." -msgstr "Unesite ispravan URL." - -#: forms/fields.py:545 -msgid "This URL appears to be a broken link." -msgstr "Ovaj URL izgleda ne vodi nikuda." - -#: forms/fields.py:625 forms/fields.py:703 +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "%(value)s nije među ponuđenim vrednostima. Odaberite jednu od ponuđenih." -#: forms/fields.py:704 forms/fields.py:765 forms/models.py:962 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:995 msgid "Enter a list of values." msgstr "Unesite listu vrednosti." -#: forms/fields.py:892 -msgid "Enter a valid IPv4 address." -msgstr "Unesite ispravnu IPv4 adresu." - -#: forms/fields.py:902 -msgid "" -"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "" -"Unesite isrpavan „slag“, koji se sastoji od slova, brojki, donjih crta ili " -"cirtica." - -#: forms/formsets.py:271 forms/formsets.py:273 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Redosled" -#: forms/models.py:367 -#, python-format -msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." -msgstr "%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s." - -#: forms/models.py:381 forms/models.py:389 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s sa ovom vrednošću %(field_label)s već postoji." - -#: forms/models.py:581 +#: forms/models.py:556 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "Ispravite dupliran sadržaj za polja: %(field)s." -#: forms/models.py:585 +#: forms/models.py:560 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" "Ispravite dupliran sadržaj za polja: %(field)s, koji mora da bude jedinstven." -#: forms/models.py:591 +#: forms/models.py:566 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " @@ -4091,33 +4776,33 @@ "Ispravite dupliran sadržaj za polja: %(field_name)s, koji mora da bude " "jedinstven za %(lookup)s u %(date_field)s." -#: forms/models.py:599 +#: forms/models.py:574 msgid "Please correct the duplicate values below." msgstr "Ispravite duplirane vrednosti dole." -#: forms/models.py:837 +#: forms/models.py:848 msgid "The inline foreign key did not match the parent instance primary key." msgstr "Strani ključ se nije poklopio sa instancom roditeljskog ključa." -#: forms/models.py:892 +#: forms/models.py:914 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Odabrana vrednost nije među ponuđenima. Odaberite jednu od ponuđenih." -#: forms/models.py:963 +#: forms/models.py:996 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "%s nije među ponuđenim vrednostima. Odaberite jednu od ponuđenih." -#: forms/models.py:965 +#: forms/models.py:998 #, python-format msgid "\"%s\" is not a valid value for a primary key." msgstr "„%s“ nije ispravna vrednost za primarni ključ." -#: template/defaultfilters.py:767 +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "da,ne,možda" -#: template/defaultfilters.py:798 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" @@ -4125,17 +4810,17 @@ msgstr[1] "%(size)d bajta" msgstr[2] "%(size)d bajtova" -#: template/defaultfilters.py:800 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:802 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:803 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -4344,7 +5029,7 @@ msgid "Dec." msgstr "dec." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "ili" @@ -4404,33 +5089,37 @@ msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:512 msgid "DATE_FORMAT" -msgstr "j. N Y." - -#: utils/translation/trans_real.py:401 +msgstr "j. F Y." + +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "j. F Y. H:i T" + +#: utils/translation/trans_real.py:514 msgid "TIME_FORMAT" msgstr "G:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:535 msgid "YEAR_MONTH_FORMAT" msgstr "F Y." -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:536 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s je uspešno kreiran." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s je uspešno ažuriran." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s je obrisan." diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr_Latn/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sr_Latn/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sr_Latn/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,44 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j. F Y.' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j. F Y. H:i' +YEAR_MONTH_FORMAT = 'F Y.' +MONTH_DAY_FORMAT = 'j. F' +SHORT_DATE_FORMAT = 'j.m.Y.' +SHORT_DATETIME_FORMAT = 'j.m.Y. H:i' +FIRST_DAY_OF_WEEK = 1 +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', # '2006-10-25' + '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.' + '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.' + # '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.' + # '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.' + # '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59' + '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30' + '%d.%m.%Y.', # '25.10.2006.' + '%d.%m.%y. %H:%M:%S', # '25.10.06. 14:30:59' + '%d.%m.%y. %H:%M', # '25.10.06. 14:30' + '%d.%m.%y.', # '25.10.06.' + '%d. %m. %Y. %H:%M:%S', # '25. 10. 2006. 14:30:59' + '%d. %m. %Y. %H:%M', # '25. 10. 2006. 14:30' + '%d. %m. %Y.', # '25. 10. 2006.' + '%d. %m. %y. %H:%M:%S', # '25. 10. 06. 14:30:59' + '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30' + '%d. %m. %y.', # '25. 10. 06.' +) +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sv/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/sv/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sv/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/sv/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/sv/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -8,7 +8,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-05-01 18:23+0200\n" "PO-Revision-Date: 2008-05-26 11:15+0200\n" -"Last-Translator: Ludvig Ericson \n" +"Last-Translator: Mikko Hellsing \n" "Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4131,107 +4131,107 @@ #: utils/dates.py:6 msgid "Monday" -msgstr "Måndag" +msgstr "måndag" #: utils/dates.py:6 msgid "Tuesday" -msgstr "Tisdag" +msgstr "tisdag" #: utils/dates.py:6 msgid "Wednesday" -msgstr "Onsdag" +msgstr "onsdag" #: utils/dates.py:6 msgid "Thursday" -msgstr "Torsdag" +msgstr "torsdag" #: utils/dates.py:6 msgid "Friday" -msgstr "Fredag" +msgstr "fredag" #: utils/dates.py:7 msgid "Saturday" -msgstr "Lördag" +msgstr "lördag" #: utils/dates.py:7 msgid "Sunday" -msgstr "Söndag" +msgstr "söndag" #: utils/dates.py:10 msgid "Mon" -msgstr "Mån" +msgstr "mån" #: utils/dates.py:10 msgid "Tue" -msgstr "Tis" +msgstr "tis" #: utils/dates.py:10 msgid "Wed" -msgstr "Ons" +msgstr "ons" #: utils/dates.py:10 msgid "Thu" -msgstr "Tors" +msgstr "tors" #: utils/dates.py:10 msgid "Fri" -msgstr "Fre" +msgstr "fre" #: utils/dates.py:11 msgid "Sat" -msgstr "Lör" +msgstr "lör" #: utils/dates.py:11 msgid "Sun" -msgstr "Sön" +msgstr "sön" #: utils/dates.py:18 msgid "January" -msgstr "Januari" +msgstr "januari" #: utils/dates.py:18 msgid "February" -msgstr "Februari" +msgstr "februari" #: utils/dates.py:18 utils/dates.py:31 msgid "March" -msgstr "Mars" +msgstr "mars" #: utils/dates.py:18 utils/dates.py:31 msgid "April" -msgstr "April" +msgstr "april" #: utils/dates.py:18 utils/dates.py:31 msgid "May" -msgstr "Maj" +msgstr "maj" #: utils/dates.py:18 utils/dates.py:31 msgid "June" -msgstr "Juni" +msgstr "juni" #: utils/dates.py:19 utils/dates.py:31 msgid "July" -msgstr "Juli" +msgstr "juli" #: utils/dates.py:19 msgid "August" -msgstr "Augusti" +msgstr "augusti" #: utils/dates.py:19 msgid "September" -msgstr "September" +msgstr "september" #: utils/dates.py:19 msgid "October" -msgstr "Oktober" +msgstr "oktober" #: utils/dates.py:19 msgid "November" -msgstr "November" +msgstr "november" #: utils/dates.py:20 msgid "December" -msgstr "December" +msgstr "december" #: utils/dates.py:23 msgid "jan" @@ -4283,31 +4283,31 @@ #: utils/dates.py:31 msgid "Jan." -msgstr "Jan." +msgstr "jan." #: utils/dates.py:31 msgid "Feb." -msgstr "Feb." +msgstr "feb." #: utils/dates.py:32 msgid "Aug." -msgstr "Aug." +msgstr "aug." #: utils/dates.py:32 msgid "Sept." -msgstr "Sept." +msgstr "sept." #: utils/dates.py:32 msgid "Oct." -msgstr "Okt." +msgstr "okt." #: utils/dates.py:32 msgid "Nov." -msgstr "Nov." +msgstr "nov." #: utils/dates.py:32 msgid "Dec." -msgstr "Dec." +msgstr "dec." #: utils/text.py:128 msgid "or" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sv/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/sv/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/sv/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,24 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'j F Y H:i' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'Y-m-d' +SHORT_DATETIME_FORMAT = 'Y-m-d H:i' +FIRST_DAY_OF_WEEK = 1 +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', # '2006-10-25' +) +TIME_INPUT_FORMATS = ( + '%H:%i', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%i', # '2006-10-25 14:30' +) +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ' ' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ta/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/ta/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/ta/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F, Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M, Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/te/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/te/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/te/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'g:i:s A' +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/th/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/th/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/th/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y' +TIME_FORMAT = 'G:i:s' +DATETIME_FORMAT = 'j F Y, G:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +SHORT_DATETIME_FORMAT = 'j M Y, G:i:s' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = '.' +THOUSAND_SEPARATOR = ',' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/tr/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/tr/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/tr/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/tr/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/tr/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-09-03 09:44+0300\n" -"PO-Revision-Date: 2008-09-03 09:41+0200\n" +"POT-Creation-Date: 2010-05-02 01:05+0300\n" +"PO-Revision-Date: 2010-05-02 01:06+0300\n" "Last-Translator: Metin Amiroff \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" @@ -20,210 +20,262 @@ msgstr "Arapça" #: conf/global_settings.py:45 -msgid "Bengali" -msgstr "Bengali Dili" +msgid "Bulgarian" +msgstr "Bulgarca" #: conf/global_settings.py:46 -msgid "Bulgarian" -msgstr "Bulgarca" +msgid "Bengali" +msgstr "Bengali Dili" #: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "Boşnakça" + +#: conf/global_settings.py:48 msgid "Catalan" msgstr "Katalanca" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Czech" msgstr "Çekçe" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Welsh" msgstr "Galce" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Danish" msgstr "Danca" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "German" msgstr "Almanca" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Greek" msgstr "Yunanca" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "English" msgstr "İngilizce" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 +msgid "British English" +msgstr "İngiltere İngilizce" + +#: conf/global_settings.py:56 msgid "Spanish" msgstr "İspanyolca" -#: conf/global_settings.py:55 -msgid "Estonian" -msgstr "Estonca" - -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Argentinean Spanish" msgstr "Arjantin İspanyolcası" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 +msgid "Estonian" +msgstr "Estonca" + +#: conf/global_settings.py:59 msgid "Basque" msgstr "Baskça" -#: conf/global_settings.py:58 +#: conf/global_settings.py:60 msgid "Persian" msgstr "Farsça" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Finnish" msgstr "Fince" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "French" msgstr "Fransızca" -#: conf/global_settings.py:61 +#: conf/global_settings.py:63 +msgid "Frisian" +msgstr "Frisce" + +#: conf/global_settings.py:64 msgid "Irish" msgstr "İrlandaca" -#: conf/global_settings.py:62 +#: conf/global_settings.py:65 msgid "Galician" msgstr "Galler Dili" -#: conf/global_settings.py:63 -msgid "Hungarian" -msgstr "Macarca" - -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Hebrew" msgstr "İbranice" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 +msgid "Hindi" +msgstr "Hinduca" + +#: conf/global_settings.py:68 msgid "Croatian" msgstr "Hırvatça" -#: conf/global_settings.py:66 +#: conf/global_settings.py:69 +msgid "Hungarian" +msgstr "Macarca" + +#: conf/global_settings.py:70 msgid "Icelandic" msgstr "İzlanda dili" -#: conf/global_settings.py:67 +#: conf/global_settings.py:71 msgid "Italian" msgstr "İtalyanca" -#: conf/global_settings.py:68 +#: conf/global_settings.py:72 msgid "Japanese" msgstr "Japonca" -#: conf/global_settings.py:69 +#: conf/global_settings.py:73 msgid "Georgian" msgstr "Gürcüce" -#: conf/global_settings.py:70 -msgid "Korean" -msgstr "Korece" - -#: conf/global_settings.py:71 +#: conf/global_settings.py:74 msgid "Khmer" msgstr "Kamboçyaca" -#: conf/global_settings.py:72 +#: conf/global_settings.py:75 msgid "Kannada" msgstr "Kannada Dili" -#: conf/global_settings.py:73 -msgid "Latvian" -msgstr "Leton Dili" - -#: conf/global_settings.py:74 +#: conf/global_settings.py:76 +msgid "Korean" +msgstr "Korece" + +#: conf/global_settings.py:77 msgid "Lithuanian" msgstr "Litovca" -#: conf/global_settings.py:75 +#: conf/global_settings.py:78 +msgid "Latvian" +msgstr "Leton Dili" + +#: conf/global_settings.py:79 msgid "Macedonian" msgstr "Makedonca" -#: conf/global_settings.py:76 +#: conf/global_settings.py:80 msgid "Dutch" msgstr "Flamanca" -#: conf/global_settings.py:77 +#: conf/global_settings.py:81 msgid "Norwegian" msgstr "Norveç Dili" -#: conf/global_settings.py:78 +#: conf/global_settings.py:82 +msgid "Norwegian Bokmal" +msgstr "Norveçce (Bokmal)" + +#: conf/global_settings.py:83 +msgid "Norwegian Nynorsk" +msgstr "Norveçce (Nynorsk)" + +#: conf/global_settings.py:84 msgid "Polish" msgstr "Lehçe" -#: conf/global_settings.py:79 -msgid "Portugese" +#: conf/global_settings.py:85 +msgid "Portuguese" msgstr "Portekizce" -#: conf/global_settings.py:80 +#: conf/global_settings.py:86 msgid "Brazilian Portuguese" msgstr "Brezilya Portekizcesi" -#: conf/global_settings.py:81 +#: conf/global_settings.py:87 msgid "Romanian" msgstr "Romence" -#: conf/global_settings.py:82 +#: conf/global_settings.py:88 msgid "Russian" msgstr "Rusça" -#: conf/global_settings.py:83 +#: conf/global_settings.py:89 msgid "Slovak" msgstr "Slovakça" -#: conf/global_settings.py:84 +#: conf/global_settings.py:90 msgid "Slovenian" msgstr "Slovence" -#: conf/global_settings.py:85 +#: conf/global_settings.py:91 +msgid "Albanian" +msgstr "Arnavutça" + +#: conf/global_settings.py:92 msgid "Serbian" msgstr "Sırpça" -#: conf/global_settings.py:86 +#: conf/global_settings.py:93 +msgid "Serbian Latin" +msgstr "Sırp Latini" + +#: conf/global_settings.py:94 msgid "Swedish" msgstr "İsveççe" -#: conf/global_settings.py:87 +#: conf/global_settings.py:95 msgid "Tamil" msgstr "Tamilce" -#: conf/global_settings.py:88 +#: conf/global_settings.py:96 msgid "Telugu" msgstr "Telugu Dili" -#: conf/global_settings.py:89 +#: conf/global_settings.py:97 +msgid "Thai" +msgstr "Tayca" + +#: conf/global_settings.py:98 msgid "Turkish" msgstr "Türkçe" -#: conf/global_settings.py:90 +#: conf/global_settings.py:99 msgid "Ukrainian" msgstr "Ukraynaca" -#: conf/global_settings.py:91 +#: conf/global_settings.py:100 +msgid "Vietnamese" +msgstr "Vyetnamca" + +#: conf/global_settings.py:101 msgid "Simplified Chinese" msgstr "Basiteştirilmiş Çince" -#: conf/global_settings.py:92 +#: conf/global_settings.py:102 msgid "Traditional Chinese" msgstr "Geleneksel Çince" +#: contrib/admin/actions.py:52 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "%(count)d adet %(items)s başarıyla silindi." + +#: contrib/admin/actions.py:59 contrib/admin/options.py:1100 +msgid "Are you sure?" +msgstr "Emin misiniz?" + +#: contrib/admin/actions.py:77 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "Seçili %(verbose_name_plural)s nesnelerini sil" + #: contrib/admin/filterspecs.py:44 #, python-format msgid "" "

                                        By %s:

                                        \n" "
                                          \n" msgstr "" -"

                                          %s nesnesine göre:

                                          \n" +"

                                          %s alanına göre:

                                          \n" "
                                            \n" -#: contrib/admin/filterspecs.py:74 -#: contrib/admin/filterspecs.py:92 -#: contrib/admin/filterspecs.py:147 -#: contrib/admin/filterspecs.py:173 +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 msgid "All" msgstr "Tümü" @@ -247,21 +299,22 @@ msgid "This year" msgstr "Bu yıl" -#: contrib/admin/filterspecs.py:147 -#: forms/widgets.py:391 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "Yes" msgstr "Evet" -#: contrib/admin/filterspecs.py:147 -#: forms/widgets.py:391 +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 msgid "No" msgstr "Hayır" -#: contrib/admin/filterspecs.py:154 -#: forms/widgets.py:391 +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 msgid "Unknown" msgstr "Bilinmiyor" +#: contrib/admin/helpers.py:20 +msgid "Action:" +msgstr "İşlem:" + #: contrib/admin/models.py:19 msgid "action time" msgstr "işlem zamanı" @@ -284,178 +337,197 @@ #: contrib/admin/models.py:28 msgid "log entry" -msgstr "girişi kaydet" +msgstr "log kaydı" #: contrib/admin/models.py:29 msgid "log entries" -msgstr "girişleri kaydet" - -#: contrib/admin/options.py:60 -#: contrib/admin/options.py:121 +msgstr "log kayıtları" + +#: contrib/admin/options.py:142 contrib/admin/options.py:157 msgid "None" msgstr "Hiç biri" -#: contrib/admin/options.py:338 +#: contrib/admin/options.py:563 #, python-format msgid "Changed %s." msgstr "%s değiştirildi." -#: contrib/admin/options.py:338 -#: contrib/admin/options.py:348 -#: forms/models.py:275 +#: contrib/admin/options.py:563 contrib/admin/options.py:573 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:844 +#: forms/models.py:573 msgid "and" msgstr "ve" -#: contrib/admin/options.py:343 +#: contrib/admin/options.py:568 #, python-format msgid "Added %(name)s \"%(object)s\"." msgstr "%(name)s \"%(object)s\" eklenmiştir." -#: contrib/admin/options.py:347 +#: contrib/admin/options.py:572 #, python-format msgid "Changed %(list)s for %(name)s \"%(object)s\"." msgstr "%(list)s %(name)s \"%(object)s\" ile değiştirildi." -#: contrib/admin/options.py:352 +#: contrib/admin/options.py:577 #, python-format msgid "Deleted %(name)s \"%(object)s\"." msgstr "%(name)s \"%(object)s\" silinmiştir." -#: contrib/admin/options.py:356 +#: contrib/admin/options.py:581 msgid "No fields changed." msgstr "Hiçbir alan değiştirilmedi." -#: contrib/admin/options.py:417 -#: contrib/auth/admin.py:51 +#: contrib/admin/options.py:647 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "\"%(obj)s\" isimli %(name)s eklendi." -#: contrib/admin/options.py:421 -#: contrib/admin/options.py:454 -#: contrib/auth/admin.py:59 +#: contrib/admin/options.py:651 contrib/admin/options.py:684 msgid "You may edit it again below." msgstr "Tekrar düzenleyebilirsiniz." -#: contrib/admin/options.py:431 -#: contrib/admin/options.py:464 +#: contrib/admin/options.py:661 contrib/admin/options.py:694 #, python-format msgid "You may add another %s below." msgstr "Yeni bir %s ekleyebilirsiniz." -#: contrib/admin/options.py:452 +#: contrib/admin/options.py:682 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "\"%(obj)s\" isimli %(name)s değiştirildi." -#: contrib/admin/options.py:460 +#: contrib/admin/options.py:690 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz." - -#: contrib/admin/options.py:536 +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz." + +#: contrib/admin/options.py:744 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"İşlemlerin uygulanabilmesi için bir veya daha fazla nesne seçilmelidir. " +"Herhangi bir değişiklik gerçekleştirilmedi." + +#: contrib/admin/options.py:762 +msgid "No action selected." +msgstr "İşlem seçimi yapılmamış. Lütfen bir işlem seçiniz." + +#: contrib/admin/options.py:842 #, python-format msgid "Add %s" msgstr "%s ekle" -#: contrib/admin/options.py:614 +#: contrib/admin/options.py:868 contrib/admin/options.py:1080 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(key)r birincil anahtarına sahip %(name)s nesnesi mevcut değil." + +#: contrib/admin/options.py:933 #, python-format msgid "Change %s" msgstr "%s değiştir" -#: contrib/admin/options.py:646 +#: contrib/admin/options.py:978 msgid "Database error" msgstr "Veritabanı hatası" -#: contrib/admin/options.py:696 +#: contrib/admin/options.py:1014 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "%(count)s adet %(name)s başarıyla değiştirildi." + +#: contrib/admin/options.py:1041 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "Toplam %(total_count)s nesne seçili" + +#: contrib/admin/options.py:1046 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "%(cnt)s nesne arasından seçim yapılmamış" + +#: contrib/admin/options.py:1093 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "\"%(obj)s\" isimli %(name)s silindi." -#: contrib/admin/options.py:703 -msgid "Are you sure?" -msgstr "Emin misiniz?" - -#: contrib/admin/options.py:732 +#: contrib/admin/options.py:1130 #, python-format msgid "Change history: %s" msgstr "%s için değişiklik geçmişi:" -#: contrib/admin/sites.py:16 -#: contrib/admin/views/decorators.py:14 -#: contrib/auth/forms.py:80 -msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "Lütfen geçerli bir kullanıcı adı ve parola girin. Tüm alanlar büyük/küçük harf duyarlıdır." - -#: contrib/admin/sites.py:227 -#: contrib/admin/views/decorators.py:40 +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Lütfen geçerli bir kullanıcı adı ve şifre girin. Tüm alanlar büyük/küçük " +"harf duyarlıdır." + +#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:40 msgid "Please log in again, because your session has expired." msgstr "Oturumunuzun süresi geçti. Lütfen tekrar giriş yapın." -#: contrib/admin/sites.py:234 -#: contrib/admin/views/decorators.py:47 -msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "Görünüşe göre tarayıcınız çerezleri kabul etmiyor. Çerez kullanımını aktif hale getirin ve sayfayı yeniden yükleyin." - -#: contrib/admin/sites.py:250 -#: contrib/admin/sites.py:256 +#: contrib/admin/sites.py:318 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Görünüşe göre tarayıcınız çerezleri kabul etmiyor. Çerez kullanımını aktif " +"hale getirin ve sayfayı yeniden yükleyin." + +#: contrib/admin/sites.py:334 contrib/admin/sites.py:340 #: contrib/admin/views/decorators.py:66 msgid "Usernames cannot contain the '@' character." msgstr "Kullanıcı isminde '@' karakteri bulunamaz." -#: contrib/admin/sites.py:253 -#: contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:337 contrib/admin/views/decorators.py:62 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "E-posta adresiniz kullanıcı adınız değil. '%s' kullanın." -#: contrib/admin/sites.py:313 +#: contrib/admin/sites.py:393 msgid "Site administration" msgstr "Site yönetimi" -#: contrib/admin/sites.py:326 -#: contrib/admin/templates/admin/login.html:26 +#: contrib/admin/sites.py:407 contrib/admin/templates/admin/login.html:26 #: contrib/admin/templates/registration/password_reset_complete.html:14 #: contrib/admin/views/decorators.py:20 msgid "Log in" msgstr "Giriş yap" -#: contrib/admin/sites.py:373 +#: contrib/admin/sites.py:452 #, python-format msgid "%s administration" msgstr "%s yönetimi" -#: contrib/admin/util.py:138 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s: %(obj)s" - -#: contrib/admin/util.py:143 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s:" - -#: contrib/admin/widgets.py:70 +#: contrib/admin/widgets.py:75 msgid "Date:" msgstr "Tarih:" -#: contrib/admin/widgets.py:70 +#: contrib/admin/widgets.py:75 msgid "Time:" msgstr "Saat:" -#: contrib/admin/widgets.py:94 +#: contrib/admin/widgets.py:99 msgid "Currently:" msgstr "Geçerli:" -#: contrib/admin/widgets.py:94 +#: contrib/admin/widgets.py:99 msgid "Change:" msgstr "Değiştir:" -#: contrib/admin/widgets.py:121 +#: contrib/admin/widgets.py:129 msgid "Lookup" msgstr "Arama" -#: contrib/admin/widgets.py:228 +#: contrib/admin/widgets.py:244 msgid "Add Another" msgstr "Yenisini Ekle" @@ -470,16 +542,17 @@ #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/app_index.html:8 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/change_form.html:17 -#: contrib/admin/templates/admin/change_list.html:8 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 #: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/object_history.html:6 -#: contrib/admin/templates/admin/auth/user/change_password.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 #: 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_change_form.html:5 #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 @@ -501,8 +574,33 @@ msgstr "Sunucu Hatası (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 "Bir hata oluştu. Hata, e-psota ile site yöneticisine bildirildi ve kısa süre içinde çözülecktir. Sabrınız için teşekkürler." +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 "" +"Bir hata oluştu. Hata, e-psota ile site yöneticisine bildirildi ve kısa süre " +"içinde çözülecktir. Sabrınız için teşekkürler." + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "Seçili işlemi uygula" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "Git" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "Tüm sayfalardaki nesneleri seçmek için buraya tıklayınız" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "Tüm %(total_count)s %(module_name)s nesnelerini seç" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "Seçimi kaldır" #: contrib/admin/templates/admin/app_index.html:10 #: contrib/admin/templates/admin/index.html:19 @@ -510,28 +608,28 @@ msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/base.html:28 msgid "Welcome," msgstr "Hoşgeldiniz," -#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/base.html:33 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokümantasyon" -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:13 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" -msgstr "Parola değiştir" - -#: contrib/admin/templates/admin/base.html:25 +msgstr "Şifre değiştir" + +#: contrib/admin/templates/admin/base.html:48 #: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "Çık" @@ -543,62 +641,96 @@ msgid "Django administration" msgstr "Django yönetimi" -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/index.html:29 msgid "Add" -msgstr "Ekleme" - -#: contrib/admin/templates/admin/change_form.html:27 +msgstr "Yeni" + +#: contrib/admin/templates/admin/change_form.html:28 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "Geçmiş" -#: contrib/admin/templates/admin/change_form.html:28 -#: contrib/admin/templates/admin/edit_inline/stacked.html:13 -#: contrib/admin/templates/admin/edit_inline/tabular.html:25 +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 msgid "View on site" msgstr "Sitede görüntüle" -#: contrib/admin/templates/admin/change_form.html:38 -#: contrib/admin/templates/admin/auth/user/change_password.html:22 +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "Lütfen aşağıdaki hatayı düzeltin." -msgstr[1] "Lütfen aşağıdaki hataları düzeltin." - -#: contrib/admin/templates/admin/change_list.html:16 +msgstr[0] "Lütfen aşağıdaki hataları düzeltin." + +#: contrib/admin/templates/admin/change_list.html:63 #, python-format msgid "Add %(name)s" -msgstr "%(name)s Ekle" - -#: contrib/admin/templates/admin/change_list.html:26 +msgstr "Yeni %(name)s" + +#: contrib/admin/templates/admin/change_list.html:82 msgid "Filter" msgstr "Filtrele" #: contrib/admin/templates/admin/delete_confirmation.html:10 -#: contrib/admin/templates/admin/submit_line.html:4 -#: forms/formsets.py:246 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 msgid "Delete" msgstr "Sil" #: contrib/admin/templates/admin/delete_confirmation.html:16 #, python-format -msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "'%(escaped_object)s' isimli %(object_name)s nesnesini silmek, bağlantılı nesnelerin silinmesini gerektiriyor, ancak aşağıdaki nesneleri silme yetkiniz yok." +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"'%(escaped_object)s' isimli %(object_name)s nesnesini silmek, bağlantılı " +"nesnelerin silinmesini gerektiriyor, ancak aşağıdaki nesneleri silme " +"yetkiniz yok." #: contrib/admin/templates/admin/delete_confirmation.html:23 #, python-format -msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:" -msgstr "\"%(escaped_object)s\" isimli %(object_name)s nesnesini silmek istediğinizden emin misiniz? Aşağıdaki bağlantılı öğeler silinecek:" +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"\"%(escaped_object)s\" isimli %(object_name)s nesnesini silmek " +"istediğinizden emin misiniz? Aşağıdaki bağlantılı öğeler silinecek:" #: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 msgid "Yes, I'm sure" msgstr "Evet, eminim" +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "Birden fazla nesneyi sil" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" +"%(object_name)s isimli nesneyi silmek, bağlantılı nesnelerin silinmesini " +"gerektiriyor, fakat aşağıdaki nesneleri silme yetkiniz yok:" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"%(object_name)s nesnelerini silmek istediğinizden emin misiniz? Aşağıdaki " +"nesneler ve bağlantılı öğeleri de silinecektir:" + #: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(filter_title)s " -msgstr " %(filter_title)s nesnesine göre " +msgstr " %(filter_title)s durumuna göre " #: contrib/admin/templates/admin/index.html:18 #, python-format @@ -607,7 +739,7 @@ #: contrib/admin/templates/admin/index.html:35 msgid "Change" -msgstr "Değiştirme" +msgstr "Düzenle" #: contrib/admin/templates/admin/index.html:45 msgid "You don't have permission to edit anything." @@ -615,7 +747,7 @@ #: contrib/admin/templates/admin/index.html:53 msgid "Recent Actions" -msgstr "Geçmiş İşlemler" +msgstr "İşlem Geçmişi" #: contrib/admin/templates/admin/index.html:54 msgid "My Actions" @@ -623,11 +755,21 @@ #: contrib/admin/templates/admin/index.html:58 msgid "None available" -msgstr "Hiç yok" +msgstr "İşlem geçmişi bulunamadı" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "Bilinmeyen içerik" #: contrib/admin/templates/admin/invalid_setup.html:7 -msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." -msgstr "Veritabanı kurulumu ile ilgili bir problem var. İlgili veritabanı tablolarının kurulu olduğundan ve veritabanının ilgili kullanıcı tarafından okunabilir olduğundan emin olun." +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Veritabanı kurulumu ile ilgili bir problem var. İlgili veritabanı " +"tablolarının kurulu olduğundan ve veritabanının ilgili kullanıcı tarafından " +"okunabilir olduğundan emin olun." #: contrib/admin/templates/admin/login.html:19 msgid "Username:" @@ -635,7 +777,7 @@ #: contrib/admin/templates/admin/login.html:22 msgid "Password:" -msgstr "Parola:" +msgstr "Şifre:" #: contrib/admin/templates/admin/object_history.html:22 msgid "Date/time" @@ -649,39 +791,38 @@ msgid "Action" msgstr "İşlem" -#: contrib/admin/templates/admin/object_history.html:30 -#: utils/translation/trans_real.py:404 -msgid "DATETIME_FORMAT" -msgstr "j F Y, H:i" - #: contrib/admin/templates/admin/object_history.html:38 -msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "Bu nesnenin işlem geçmişi yok. Muhtemelen yönetici sayfası dışında bir yerden eklendi." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Bu nesnenin işlem geçmişi yok. Muhtemelen yönetici sayfası dışında bir " +"yerden eklendi." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "Tümünü göster" +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Kaydet" + #: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Git" +msgid "Search" +msgstr "Ara" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "1 result" msgid_plural "%(counter)s results" -msgstr[0] "1 sonuç" -msgstr[1] "%(counter)s sonuç" +msgstr[0] "%(counter)s sonuç" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "%(full_result_count)s total" msgstr "toplam %(full_result_count)s" -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Save" -msgstr "Kaydet" - #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save as new" msgstr "Yeni olarak kaydet" @@ -694,40 +835,46 @@ msgid "Save and continue editing" msgstr "Kaydet ve düzenlemeye devam et" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "First, enter a username and password. Then, you'll be able to edit more user options." -msgstr "Önce bir kullanıcı adı ve parola girin. Daha sonra daha fazla bilgi girebilirsiniz." - -#: contrib/admin/templates/admin/auth/user/add_form.html:13 -#: contrib/auth/forms.py:14 -#: contrib/auth/forms.py:47 -#: contrib/auth/forms.py:59 -msgid "Username" -msgstr "Kullanıcı adı" - -#: contrib/admin/templates/admin/auth/user/add_form.html:20 -#: contrib/admin/templates/admin/auth/user/change_password.html:33 -#: contrib/auth/forms.py:17 -#: contrib/auth/forms.py:60 -#: contrib/auth/forms.py:184 -msgid "Password" -msgstr "Parola" - -#: contrib/admin/templates/admin/auth/user/add_form.html:26 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -#: contrib/auth/forms.py:185 -msgid "Password (again)" -msgstr "Parola (tekrar)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:27 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -msgid "Enter the same password as above, for verification." -msgstr "Onaylamak için, yukarıdaki parolanın aynısını girin." - -#: contrib/admin/templates/admin/auth/user/change_password.html:26 +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Önce bir kullanıcı adı ve şifre girin. Daha sonra daha fazla bilgi " +"girebilirsiniz." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "%(username)s için yeni parola girin." +msgstr "%(username)s için yeni şifre girin." + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Şifre" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Şifre (tekrar)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Onaylamak için, yukarıdaki şifrenin aynısını girin." + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Yeni bir %(verbose_name)s ekle" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "Sil" #: contrib/admin/templates/admin/edit_inline/tabular.html:15 msgid "Delete?" @@ -742,43 +889,43 @@ msgstr "Tekrar giriş yap" #: 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 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "Password change" -msgstr "Parola değişimi" +msgstr "Şifre değişimi" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" -msgstr "Parola değişimi başarılı" +msgstr "Şifre değişimi başarılı" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." -msgstr "Parolanız değiştirildi." - -#: 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 "Güvenliğiniz için, lütfen eski parolanızı girin, sonra da yeni parolanızı iki kere girin ve böylece doğru yazdığınızdan emin olun." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Eski parola:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -#: contrib/admin/templates/registration/password_reset_confirm.html:18 -msgid "New password:" -msgstr "Yeni parola:" +msgstr "Şifreniz değiştirildi." #: contrib/admin/templates/registration/password_change_form.html:21 -#: contrib/admin/templates/registration/password_reset_confirm.html:20 -msgid "Confirm password:" -msgstr "Parolayı onayla:" - -#: contrib/admin/templates/registration/password_change_form.html:23 +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 "" +"Güvenliğiniz için, lütfen eski şifrenizi girin, sonra yeni şifrenizi iki " +"kere girerek doğru yazdığınızdan emin olun." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Eski şifre" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Yeni şifre" + +#: contrib/admin/templates/registration/password_change_form.html:43 #: contrib/admin/templates/registration/password_reset_confirm.html:21 msgid "Change my password" -msgstr "Parolamı değiştir" +msgstr "Şifremi değiştir" #: contrib/admin/templates/registration/password_reset_complete.html:4 #: contrib/admin/templates/registration/password_reset_confirm.html:6 @@ -787,12 +934,12 @@ #: contrib/admin/templates/registration/password_reset_form.html:6 #: contrib/admin/templates/registration/password_reset_form.html:10 msgid "Password reset" -msgstr "Parolayı sıfırla" +msgstr "Şifreyi sıfırla" #: contrib/admin/templates/registration/password_reset_complete.html:6 #: contrib/admin/templates/registration/password_reset_complete.html:10 msgid "Password reset complete" -msgstr "Parola sıfırlama tamamlandı" +msgstr "Şifre sıfırlama tamamlandı" #: contrib/admin/templates/registration/password_reset_complete.html:12 msgid "Your password has been set. You may go ahead and log in now." @@ -800,32 +947,52 @@ #: contrib/admin/templates/registration/password_reset_confirm.html:4 msgid "Password reset confirmation" -msgstr "Parola sıfırlama onayı" +msgstr "Şifre sıfırlama onayı" #: contrib/admin/templates/registration/password_reset_confirm.html:12 msgid "Enter new password" -msgstr "Yeni parolayı girin" +msgstr "Yeni şifreyi girin" #: contrib/admin/templates/registration/password_reset_confirm.html:14 -msgid "Please enter your new password twice so we can verify you typed it in correctly." -msgstr "Lütfen yeni parolanızı iki kere girin, böylece doğru yazdığınızdan emin olun." +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Lütfen yeni şifrenizi iki kere girin, böylece doğru yazdığınızdan emin olun." + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Yeni şifre:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Şifreyi onayla:" #: contrib/admin/templates/registration/password_reset_confirm.html:26 msgid "Password reset unsuccessful" -msgstr "Parola sıfırlaması başarısız oldu" +msgstr "Şifre sıfırlaması başarısız oldu" #: contrib/admin/templates/registration/password_reset_confirm.html:28 -msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "Parola sıfırlama linki geçersiz bulunmuştur, büyük ihtimalle daha önce kullanılmış olduğu içindir. Lütfen yeni bir parola sıfırlama talebinde bulunun." +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Şifre sıfırlama linki geçersiz bulunmuştur, büyük ihtimalle daha önce " +"kullanılmış olduğu içindir. Lütfen yeni bir şifre sıfırlama talebinde " +"bulunun." #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "Parola başarıyla sıfırlandı" +msgstr "Şifre başarıyla sıfırlandı" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Yeni parolanızı alabilmeniz için gereken talimatları belirtmiş olduğunuz e-posta adresinize gönderilmiştir, kısa süre içinde size ulaşacaktır." +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Yeni şifrenizi alabilmeniz için gereken talimatları belirtmiş olduğunuz e-" +"posta adresinize gönderilmiştir, kısa süre içinde size ulaşacaktır." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -834,7 +1001,9 @@ #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" -msgstr "%(site_name)s adresindeki kullanıcı hesabınız için parola sıfırlama talebinde bulundunuz." +msgstr "" +"%(site_name)s adresindeki kullanıcı hesabınız için şifre sıfırlama talebinde " +"bulundunuz." #: contrib/admin/templates/registration/password_reset_email.html:5 msgid "Please go to the following page and choose a new password:" @@ -854,8 +1023,12 @@ msgstr "%(site_name)s Ekibi" #: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." -msgstr "Parolanızı mı unuttunuz? E-posta adresinizi aşağıya girin, yenisini almanız için gereken talimatları e-posta adresinize gönderelim." +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" +"Şifrenizi mı unuttunuz? E-posta adresinizi aşağıya girin, yenisini almanız " +"için gereken talimatları e-posta adresinize gönderilsin." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -863,181 +1036,87 @@ #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" -msgstr "Parolamı sıfırla" - -#: contrib/admin/templatetags/admin_list.py:288 +msgstr "Şifremi sıfırla" + +#: contrib/admin/templatetags/admin_list.py:239 msgid "All dates" msgstr "Tüm tarihler" -#: contrib/admin/views/main.py:69 +#: contrib/admin/views/main.py:70 #, python-format msgid "Select %s" msgstr "%s seç" -#: contrib/admin/views/main.py:69 +#: contrib/admin/views/main.py:70 #, python-format msgid "Select %s to change" msgstr "Değiştirilecek %s nesnesini seçin" -#: contrib/admin/views/template.py:36 -#: contrib/sites/models.py:38 +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 msgid "site" msgstr "site" -#: contrib/admin/views/template.py:38 +#: contrib/admin/views/template.py:40 msgid "template" msgstr "şablon" -#: contrib/admindocs/views.py:57 -#: contrib/admindocs/views.py:59 -#: contrib/admindocs/views.py:61 +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 msgid "tag:" msgstr "etiket:" -#: contrib/admindocs/views.py:90 -#: contrib/admindocs/views.py:92 -#: contrib/admindocs/views.py:94 +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 msgid "filter:" msgstr "filtre:" -#: contrib/admindocs/views.py:154 -#: contrib/admindocs/views.py:156 -#: contrib/admindocs/views.py:158 +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 msgid "view:" -msgstr "view:" - -#: contrib/admindocs/views.py:186 +msgstr "görünüm:" + +#: contrib/admindocs/views.py:190 #, python-format msgid "App %r not found" msgstr "%r uygulaması bulunamadı" -#: contrib/admindocs/views.py:193 +#: contrib/admindocs/views.py:197 #, python-format msgid "Model %(model_name)r not found in app %(app_label)r" msgstr "%(app_label)r uygulamasında %(model_name)r modeli bulunamadı" -#: contrib/admindocs/views.py:205 +#: contrib/admindocs/views.py:209 #, python-format msgid "the related `%(app_label)s.%(data_type)s` object" msgstr "İlgili `%(app_label)s.%(data_type)s` nesnesi" -#: contrib/admindocs/views.py:205 -#: contrib/admindocs/views.py:227 -#: contrib/admindocs/views.py:241 -#: contrib/admindocs/views.py:246 +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 msgid "model:" msgstr "model:" -#: contrib/admindocs/views.py:236 +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 #, python-format msgid "related `%(app_label)s.%(object_name)s` objects" msgstr "ilgili `%(app_label)s.%(object_name)s` nesneleri" -#: contrib/admindocs/views.py:241 +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 #, python-format msgid "all %s" msgstr "tüm %s" -#: contrib/admindocs/views.py:246 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 #, python-format msgid "number of %s" msgstr "%s sayısı" -#: contrib/admindocs/views.py:251 +#: contrib/admindocs/views.py:271 #, python-format msgid "Fields on %s objects" msgstr "%s nesnesindeki alanlar" -#: contrib/admindocs/views.py:314 -#: contrib/admindocs/views.py:325 -#: contrib/admindocs/views.py:327 -#: contrib/admindocs/views.py:333 -#: contrib/admindocs/views.py:334 -#: contrib/admindocs/views.py:336 -msgid "Integer" -msgstr "Tamsayı" - -#: contrib/admindocs/views.py:315 -msgid "Boolean (Either True or False)" -msgstr "Mantıksal (True ya da False)" - -#: contrib/admindocs/views.py:316 -#: contrib/admindocs/views.py:335 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Karakter disizi (en fazla %(max_length)s)" - -#: contrib/admindocs/views.py:317 -msgid "Comma-separated integers" -msgstr "Virgülle ayrılmış tamsayılar" - -#: contrib/admindocs/views.py:318 -msgid "Date (without time)" -msgstr "Tarih (saat yok)" - -#: contrib/admindocs/views.py:319 -msgid "Date (with time)" -msgstr "Tarih (saat var)" - -#: contrib/admindocs/views.py:320 -msgid "Decimal number" -msgstr "Ondalık sayı:" - -#: contrib/admindocs/views.py:321 -msgid "E-mail address" -msgstr "E-posta adresi" - -#: contrib/admindocs/views.py:322 -#: contrib/admindocs/views.py:323 -#: contrib/admindocs/views.py:326 -msgid "File path" -msgstr "Dosya yolu" - -#: contrib/admindocs/views.py:324 -msgid "Floating point number" -msgstr "Floating point rakamı" - -#: contrib/admindocs/views.py:328 -#: contrib/comments/models.py:58 -msgid "IP address" -msgstr "IP adresi" - -#: contrib/admindocs/views.py:330 -msgid "Boolean (Either True, False or None)" -msgstr "Mantıksal (True, False, ya da None)" - -#: contrib/admindocs/views.py:331 -msgid "Relation to parent model" -msgstr "Ana modelle ilişki" - -#: contrib/admindocs/views.py:332 -msgid "Phone number" -msgstr "Telefon numarası" - -#: contrib/admindocs/views.py:337 -msgid "Text" -msgstr "Metin" - -#: contrib/admindocs/views.py:338 -msgid "Time" -msgstr "Saat" - -#: contrib/admindocs/views.py:339 -#: contrib/comments/forms.py:22 -#: contrib/flatpages/admin.py:8 -#: contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admindocs/views.py:340 -msgid "U.S. state (two uppercase letters)" -msgstr "Şehir Kodu (iki karakter)" - -#: contrib/admindocs/views.py:341 -msgid "XML text" -msgstr "XML metni" - -#: contrib/admindocs/views.py:367 +#: contrib/admindocs/views.py:361 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s geçerli bir adres kalıbı değil" @@ -1061,9 +1140,12 @@ "your computer is \"internal\").

                                            \n" msgstr "" "\n" -"

                                            Kısayolları kullanabilmek için, bağlantıyı tarayıcınızdaki araç\n" -"çubuğuna sürükleyin, ya da sağ tıklayıp sık kullanılan adresler listenize ekleyin. \n" -"Bazı kısayollar, uygulamayı çalıştıran sunucu ile aynı adreste bulunan istemciler \n" +"

                                            Kısayolları kullanabilmek için, bağlantıyı tarayıcınızdaki " +"araç\n" +"çubuğuna sürükleyin, ya da sağ tıklayıp sık kullanılan adresler listenize " +"ekleyin. \n" +"Bazı kısayollar, uygulamayı çalıştıran sunucu ile aynı adreste bulunan " +"istemciler \n" "tarafından kullanılabilir.

                                            \n" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 @@ -1071,7 +1153,9 @@ msgstr "Bu sayfa için dokümantasyon" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 -msgid "Jumps you from any page to the documentation for the view that generates that page." +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." msgstr "Sizi, bu sayfayı üreten betiğin dokümantasyonuna yönlendirir." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 @@ -1079,8 +1163,11 @@ msgstr "Nesne numarasını göster" #: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 -msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir." +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir." #: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" @@ -1098,290 +1185,383 @@ msgid "As above, but opens the admin page in a new window." msgstr "Yukarıdaki gibi, ancak yönetim sayfasını yeni bir pencerede açar." -#: contrib/auth/admin.py:21 +#: contrib/auth/admin.py:29 msgid "Personal info" msgstr "Kişisel bilgiler" -#: contrib/auth/admin.py:22 +#: contrib/auth/admin.py:30 msgid "Permissions" msgstr "İzinler" -#: contrib/auth/admin.py:23 +#: contrib/auth/admin.py:31 msgid "Important dates" msgstr "Önemli tarihler" -#: contrib/auth/admin.py:24 +#: contrib/auth/admin.py:32 msgid "Groups" msgstr "Gruplar" -#: contrib/auth/admin.py:64 -msgid "Add user" -msgstr "Kullanıcı ekle" - -#: contrib/auth/admin.py:90 +#: contrib/auth/admin.py:114 msgid "Password changed successfully." -msgstr "Parola başarı ile değiştirildi." - -#: contrib/auth/admin.py:96 +msgstr "Şifre başarı ile değiştirildi." + +#: contrib/auth/admin.py:124 #, python-format msgid "Change password: %s" -msgstr "Parola değiştir: %s" - -#: contrib/auth/forms.py:15 -#: contrib/auth/forms.py:48 -#: contrib/auth/models.py:136 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "Zorunlu alan. 30 karakter ya da da az olmalı. Alfanumerik (harf, rakam ve alt çizgi) karakterler kullanılabilir." - -#: contrib/auth/forms.py:16 -#: contrib/auth/forms.py:49 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Bu değer sadece karakter, rakam ve altçizgiden oluşabilir." +msgstr "Şifre değiştir: %s" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Kullanıcı adı" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Zorunlu alan. 30 karakter ya da az olmalı. Harf, rakam ve @/./+/-/_ " +"karakterleri kullanılabilir." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "Bu değer sadece harf, rakam ve @/./+/-/_ karakterlerini içerebilir." #: contrib/auth/forms.py:18 msgid "Password confirmation" -msgstr "Parola onayı" - -#: contrib/auth/forms.py:30 +msgstr "Şifre onayı" + +#: contrib/auth/forms.py:31 msgid "A user with that username already exists." msgstr "Bu isimde bir kullanıcı zaten mevcuttur." -#: contrib/auth/forms.py:36 -#: contrib/auth/forms.py:154 -#: contrib/auth/forms.py:196 +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 msgid "The two password fields didn't match." -msgstr "İki parola alanı uyuşmuyor." - -#: contrib/auth/forms.py:82 +msgstr "İki şifre alanı uyuşmuyor." + +#: contrib/auth/forms.py:83 msgid "This account is inactive." msgstr "Bu hesap aktif değil." -#: contrib/auth/forms.py:87 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." -msgstr "Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için gerekli." - -#: contrib/auth/forms.py:100 +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için " +"gerekli." + +#: contrib/auth/forms.py:101 msgid "E-mail" msgstr "E-posta adresi" -#: contrib/auth/forms.py:109 -msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" -msgstr "Bu e-posta hesabıyla ilişkili kullanıcı bulunmuyor. Kayıtlı olduğunuzdan emin misiniz?" - -#: contrib/auth/forms.py:134 +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Bu e-posta hesabıyla ilişkili kullanıcı bulunmuyor. Kayıtlı olduğunuzdan " +"emin misiniz?" + +#: contrib/auth/forms.py:136 #, python-format msgid "Password reset on %s" -msgstr "%s sitesindeki hesabınızın parolasının sıfırlanması" - -#: contrib/auth/forms.py:142 -msgid "New password" -msgstr "Yeni parola" - -#: contrib/auth/forms.py:143 +msgstr "%s sitesindeki hesabınızın şifresinin sıfırlanması" + +#: contrib/auth/forms.py:145 msgid "New password confirmation" -msgstr "Yeni parola tekrarı" - -#: contrib/auth/forms.py:168 -msgid "Old password" -msgstr "Eski parola" - -#: contrib/auth/forms.py:176 +msgstr "Yeni şifre tekrarı" + +#: contrib/auth/forms.py:178 msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "Eski parolanız hatalı. Lütfen tekrar girin." +msgstr "Eski şifreniz hatalı. Lütfen tekrar girin." + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "isim" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "takma ad" #: contrib/auth/models.py:72 -#: contrib/auth/models.py:95 -msgid "name" -msgstr "isim" - -#: contrib/auth/models.py:74 -msgid "codename" -msgstr "takma ad" - -#: contrib/auth/models.py:77 msgid "permission" msgstr "izin" -#: contrib/auth/models.py:78 -#: contrib/auth/models.py:96 +#: contrib/auth/models.py:73 contrib/auth/models.py:95 msgid "permissions" msgstr "izinler" -#: contrib/auth/models.py:99 +#: contrib/auth/models.py:98 msgid "group" msgstr "grup" -#: contrib/auth/models.py:100 -#: contrib/auth/models.py:146 +#: contrib/auth/models.py:99 contrib/auth/models.py:206 msgid "groups" msgstr "gruplar" -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:196 msgid "username" msgstr "kullanıcı adı" -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Zorunlu alan. 30 karakter ya da az olmalı. Harf, rakam ve @/./+/-/_ " +"karakterleri kullanılabilir" + +#: contrib/auth/models.py:197 msgid "first name" msgstr "isim" -#: contrib/auth/models.py:138 +#: contrib/auth/models.py:198 msgid "last name" msgstr "soyisim" -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:199 msgid "e-mail address" msgstr "e-posta adresi" -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:200 msgid "password" -msgstr "parola" - -#: contrib/auth/models.py:140 -msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "şifre" + +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." msgstr "" -"'[algo]$[salt]$[hexdigest]' yazın ya da parola\n" +"'[algo]$[salt]$[hexdigest]' yazın ya da şifre\n" "değiştir formunu kullanın." -#: contrib/auth/models.py:141 +#: contrib/auth/models.py:201 msgid "staff status" -msgstr "yönetici modu" - -#: contrib/auth/models.py:141 +msgstr "yönetici" + +#: contrib/auth/models.py:201 msgid "Designates whether the user can log into this admin site." -msgstr "Kullanıcının yönetici sayfasına girip giremeyeceğini belirler." - -#: contrib/auth/models.py:142 +msgstr "Kullanıcının yönetim (admin) paneline girip giremeyeceğini belirler." + +#: contrib/auth/models.py:202 msgid "active" msgstr "aktif" -#: contrib/auth/models.py:142 -msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." -msgstr "Kullanıcının aktif olup olmadığını belirler. Kullanıcı hesabı silmek yerine bu işareti kaldırın." - -#: contrib/auth/models.py:143 +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Kullanıcının aktif olup olmadığını belirler. Kullanıcı hesabını silmek " +"yerine bu işareti kaldırın." + +#: contrib/auth/models.py:203 msgid "superuser status" -msgstr "süper kullanıcı modu" - -#: contrib/auth/models.py:143 -msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "Kullanıcının tek tek hak atamasına gerek kalmadan tüm haklara sahip olup olamayacağını belirler." - -#: contrib/auth/models.py:144 +msgstr "süper kullanıcı" + +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Kullanıcıya ayrı ayrı izin atamasına gerek kalmadan tüm hakların verilip " +"verilmeyeceğini belirler." + +#: contrib/auth/models.py:204 msgid "last login" msgstr "son ziyaret" -#: contrib/auth/models.py:145 +#: contrib/auth/models.py:205 msgid "date joined" msgstr "kayıt tarihi" -#: contrib/auth/models.py:147 -msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." -msgstr "Özel olarak atanmış hakların yanı sıra, kullanıcının üyesi olduğu grupların hakları alır." - -#: contrib/auth/models.py:148 +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Özel olarak atanmış hakların yanı sıra, kullanıcı, üyesi olduğu grupların " +"haklarını da alır." + +#: contrib/auth/models.py:208 msgid "user permissions" msgstr "kullanıcı izinleri" -#: contrib/auth/models.py:152 +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 msgid "user" msgstr "kullanıcı" -#: contrib/auth/models.py:153 +#: contrib/auth/models.py:213 msgid "users" msgstr "kullanıcılar" -#: contrib/auth/models.py:308 +#: contrib/auth/models.py:394 msgid "message" msgstr "mesaj" -#: contrib/auth/views.py:50 +#: contrib/auth/views.py:79 msgid "Logged out" msgstr "Çıkış yapıldı" #: contrib/auth/management/commands/createsuperuser.py:23 -#: forms/fields.py:428 +#: core/validators.py:120 forms/fields.py:428 msgid "Enter a valid e-mail address." msgstr "Geçerli bir e-posta adresi girin." -#: contrib/comments/admin.py:11 +#: contrib/comments/admin.py:12 msgid "Content" msgstr "İçerik" -#: contrib/comments/admin.py:14 +#: contrib/comments/admin.py:15 msgid "Metadata" msgstr "Meta bilgi" -#: contrib/comments/forms.py:20 +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "işaretli" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "Seçili yorumları işaretle" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "onaylandı" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "Seçili yorumları onayla" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "silinmiş" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "Seçili yorumları sil" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "%(count)s adet yorum başarıyla %(action)s." + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "%(site_name)s sitesine ait yorumlar" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "%(site_name)s sitesindeki son yorumlar" + +#: contrib/comments/forms.py:93 msgid "Name" msgstr "İsim" -#: contrib/comments/forms.py:21 +#: contrib/comments/forms.py:94 msgid "Email address" msgstr "E-posta adresi" -#: contrib/comments/forms.py:23 +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "URL" + +#: contrib/comments/forms.py:96 msgid "Comment" msgstr "Yorum" -#: contrib/comments/forms.py:26 -msgid "If you enter anything in this field your comment will be treated as spam" -msgstr "Eğer bu alana herhangi bir şey girerseniz, yorumunuz spam olarak kabul edilecektir" - -#: contrib/comments/forms.py:126 +#: contrib/comments/forms.py:175 #, 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öylediğinize dikkat edin! %s kelimeleri burada kullanılamaz." -#: contrib/comments/models.py:23 +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" +"Eğer bu alana herhangi bir şey girerseniz, yorumunuz spam olarak kabul " +"edilecektir" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "içerik türü" + +#: contrib/comments/models.py:24 msgid "object ID" msgstr "nesne no" -#: contrib/comments/models.py:50 +#: contrib/comments/models.py:52 msgid "user's name" msgstr "kullanıcının adı" -#: contrib/comments/models.py:51 +#: contrib/comments/models.py:53 msgid "user's email address" msgstr "kullanıcının e-posta adresi" -#: contrib/comments/models.py:52 +#: contrib/comments/models.py:54 msgid "user's URL" msgstr "kullanıcının URL'si" -#: contrib/comments/models.py:54 +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 msgid "comment" msgstr "yorum" -#: contrib/comments/models.py:57 -msgid "date/time submitted" -msgstr "gönderim tarihi/saati" - #: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "gönderim tarihi/saati" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "IP adresi" + +#: contrib/comments/models.py:61 msgid "is public" msgstr "görünürlük" -#: contrib/comments/models.py:60 -msgid "Uncheck this box to make the comment effectively disappear from the site." +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." msgstr "Yorumu site üzerinden kaldırmak için bu kutucuğun seçimini kaldırın." -#: contrib/comments/models.py:62 +#: contrib/comments/models.py:64 msgid "is removed" msgstr "silinmiş" -#: contrib/comments/models.py:63 -msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." -msgstr "Yorum uygunsuz ise bu işareti kaldırın. \"Yorum silindi\" uyarısı görüntülenecek." - -#: contrib/comments/models.py:115 -msgid "This comment was posted by an authenticated user and thus the name is read-only." -msgstr "Bu yorum kayıtlı kullanıcı tarafından yazıldığı için başlığı salt okunurdur." - -#: contrib/comments/models.py:124 -msgid "This comment was posted by an authenticated user and thus the email is read-only." -msgstr "Bu yorum kayıtlı kullanıcı tarafından yazıldığı için e-posta adresi salt okunurdur." - -#: contrib/comments/models.py:149 +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Yorum uygunsuz ise bu işareti kaldırın. \"Yorum silindi\" uyarısı " +"görüntülenecek." + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "yorumlar" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" +"Bu yorum kayıtlı kullanıcı tarafından yazıldığı için başlığı salt okunurdur." + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" +"Bu yorum kayıtlı kullanıcı tarafından yazıldığı için e-posta adresi salt " +"okunurdur." + +#: contrib/comments/models.py:153 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1396,25 +1576,132 @@ "\n" "http://%(domain)s%(url)s" -#: contrib/contenttypes/models.py:67 +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "işaret" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "tarih" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "yorum işareti" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "yorum işaretleri" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "Yorumu onayla" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "Bu yorum gerçekten umuma açılsın mı?" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "Onayla" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "Onayınız için teşekkürler" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" +"Sitemizdeki tartışma kalitesini yükseltmek amacıyla ayırdığınız zaman için " +"teşekkür ederiz." + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "Yorumu sil" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "Yorum silinsin mi?" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "Sildiğiniz için teşekkürler" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "Bu yorumu işlaretle" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "Yorum işaretlensin mi?" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "İşaret" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "İşaretlediğiniz için teşekkürler" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "Gönderi" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "Önizleme" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "Yorumunuz için teşekkürler" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "Yorumunuz için teşekkür ederiz" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "Yorumunuzun önüzlemesini görün" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Lütfen aşağıdaki hataları düzeltin" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "Yorumunuzu gönderin" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "veya düzenleme yapmak" + +#: contrib/contenttypes/models.py:77 msgid "python model class name" msgstr "python model sınıf adı" -#: contrib/contenttypes/models.py:71 -msgid "content type" -msgstr "içerik türü" - -#: contrib/contenttypes/models.py:72 +#: contrib/contenttypes/models.py:82 msgid "content types" msgstr "içerik türleri" #: contrib/flatpages/admin.py:9 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin olun." +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin " +"olun." #: contrib/flatpages/admin.py:11 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Bu değer sadece harf, rakam, altçizgi, bölü ve ters bölüden oluşabilir." +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Bu değer sadece harf, rakam, altçizgi, bölü ve ters bölüden oluşabilir." #: contrib/flatpages/admin.py:22 msgid "Advanced options" @@ -1437,8 +1724,12 @@ msgstr "şablon adı" #: contrib/flatpages/models.py:12 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem otomatik olarak 'flatpages/default.html' kullanacak." +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem " +"otomatik olarak 'flatpages/default.html' kullanacak." #: contrib/flatpages/models.py:13 msgid "registration required" @@ -1456,22 +1747,67 @@ msgid "flat pages" msgstr "düz sayfalar" -#: contrib/formtools/wizard.py:130 -msgid "We apologize, but your form has expired. Please continue filling out the form from this page." -msgstr "Özür dileriz, form bilgileriniz zaman aşımına uğramış. Lütfen formu bu sayfada doldurmaya devam edin." - -#: contrib/gis/forms/fields.py:14 +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Özür dileriz, form bilgileriniz zaman aşımına uğramış. Lütfen formu bu " +"sayfada doldurmaya devam edin." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" +"Taban GIS alanı -- OpenGIS Spesifikasyonu Geometri türüne eşleşmektedir." + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "Nokta" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "Satır dizisi" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "Poligon" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "Çok noktalı" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "Çok satırlı metin" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "Çoklu poligon" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "Geometri kolleksiyonu" + +#: contrib/gis/forms/fields.py:17 msgid "No geometry value provided." msgstr "Hiçbir geometri değeri verilmemiştir." -#: contrib/gis/forms/fields.py:15 +#: contrib/gis/forms/fields.py:18 msgid "Invalid geometry value." msgstr "Geçersiz geometri değeri." -#: contrib/gis/forms/fields.py:16 +#: contrib/gis/forms/fields.py:19 msgid "Invalid geometry type." msgstr "Geçersiz geometri türü." +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" +"Geometri verisi geometri form alanının SRID değerine dönüştürülürken hata " +"oluştu." + #: contrib/humanize/templatetags/humanize.py:19 msgid "th" msgstr "." @@ -1493,21 +1829,18 @@ msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f milyon" -msgstr[1] "%(value).1f milyon" #: contrib/humanize/templatetags/humanize.py:54 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value).1f milyar" -msgstr[1] "%(value).1f milyar" #: contrib/humanize/templatetags/humanize.py:57 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value).1f trilyon" -msgstr[1] "%(value).1f trilyon" #: contrib/humanize/templatetags/humanize.py:73 msgid "one" @@ -1557,27 +1890,25 @@ msgid "yesterday" msgstr "dün" -#: contrib/localflavor/ar/forms.py:27 +#: contrib/localflavor/ar/forms.py:28 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "NNNN ya da ANNNNAAA formatında bir posta kodu yazın." -#: contrib/localflavor/ar/forms.py:49 -#: contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 -#: contrib/localflavor/pe/forms.py:23 -#: contrib/localflavor/pe/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 msgid "This field requires only numbers." msgstr "Bu alan sadece rakam gerektirmektedir." -#: contrib/localflavor/ar/forms.py:50 +#: contrib/localflavor/ar/forms.py:51 msgid "This field requires 7 or 8 digits." msgstr "Bu alan 7 veya 8 rakam gerektirmektedir." -#: contrib/localflavor/ar/forms.py:79 +#: contrib/localflavor/ar/forms.py:80 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." msgstr "XX-XXXXXXXX-X ya da XXXXXXXXXXXX formatında bir CUIT girin." -#: contrib/localflavor/ar/forms.py:80 +#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Geçersiz CUIT." @@ -1617,55 +1948,62 @@ msgid "Vienna" msgstr "Vyana" -#: contrib/localflavor/at/forms.py:20 -#: contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 msgid "Enter a zip code in the format XXXX." msgstr "XXXX formatında posta kodu girin." #: contrib/localflavor/at/forms.py:48 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." -msgstr "Lütfen XXXX XXXXXX formatında geçerli bir Avusturya Sosyal Güvenlik Numarası giriniz." - -#: contrib/localflavor/au/forms.py:16 +msgstr "" +"Lütfen XXXX XXXXXX formatında geçerli bir Avusturya Sosyal Güvenlik Numarası " +"giriniz." + +#: contrib/localflavor/au/forms.py:17 msgid "Enter a 4 digit post code." msgstr "4 rakamlı posta kodu girin." -#: contrib/localflavor/br/forms.py:21 +#: contrib/localflavor/br/forms.py:22 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "XXXXX-XXX formatında posta kodu girin." -#: contrib/localflavor/br/forms.py:30 +#: contrib/localflavor/br/forms.py:31 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Telefon numaraları XX-XXXX-XXXX formatında olmalıdır." -#: contrib/localflavor/br/forms.py:58 -msgid "Select a valid brazilian state. That state is not one of the available states." -msgstr "Lütfen geçerli bir Brezilya bölgesi seçin. Seçilen bölge mevcutlar arasında yoktur." - -#: contrib/localflavor/br/forms.py:94 +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" +"Lütfen geçerli bir Brezilya bölgesi seçin. Seçilen bölge mevcutlar arasında " +"yoktur." + +#: contrib/localflavor/br/forms.py:95 msgid "Invalid CPF number." msgstr "Geçersiz CPF numarası." -#: contrib/localflavor/br/forms.py:95 +#: contrib/localflavor/br/forms.py:96 msgid "This field requires at most 11 digits or 14 characters." msgstr "Bu en fazla 11 rakam veya 14 karakter gerektirmektedir." -#: contrib/localflavor/br/forms.py:134 +#: contrib/localflavor/br/forms.py:135 msgid "Invalid CNPJ number." msgstr "Geçersiz CNPJ numarası." -#: contrib/localflavor/br/forms.py:136 +#: contrib/localflavor/br/forms.py:137 msgid "This field requires at least 14 digits" msgstr "Bu alan en az 14 rakam gerektirmektedir" -#: contrib/localflavor/ca/forms.py:17 +#: contrib/localflavor/ca/forms.py:25 msgid "Enter a postal code in the format XXX XXX." msgstr "XXX XXX formatında posta kodunu girin." -#: contrib/localflavor/ca/forms.py:88 +#: contrib/localflavor/ca/forms.py:96 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." -msgstr "Lütfen XXX-XXX-XXX formatında geçerli bir Kanada Sosyal Güvenlik Numarası girin." +msgstr "" +"Lütfen XXX-XXX-XXX formatında geçerli bir Kanada Sosyal Güvenlik Numarası " +"girin." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1771,22 +2109,104 @@ msgid "Zurich" msgstr "Zürih" -#: contrib/localflavor/ch/forms.py:64 -msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." -msgstr "Lütfen X1234567<0 veya 1234567890 formatında geçerli bir İsviçre kimlik veya pasaport numarası giriniz." - -#: contrib/localflavor/cl/forms.py:29 +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Lütfen X1234567<0 veya 1234567890 formatında geçerli bir İsviçre kimlik veya " +"pasaport numarası giriniz." + +#: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT." msgstr "Geçerli bir Şili RUT numarası girin." -#: contrib/localflavor/cl/forms.py:30 +#: contrib/localflavor/cl/forms.py:31 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Geçerli bir Şili RUT numarası girin. Format: XX.XXX.XXX-X." -#: contrib/localflavor/cl/forms.py:31 +#: contrib/localflavor/cl/forms.py:32 msgid "The Chilean RUT is not valid." msgstr "Şili RUT numarası geçersizdir." +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "Prag" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "Merkezi Bohemia Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "Güney Bohemia Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "Pilsen Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "Carlsbad Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "Usti Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "Liberec Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "Hradec Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "Pardubice Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "Vysocina Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "South Moravian Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "Olomouc Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "Zlin Bölgesi" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "Moravian-Silesian Bölgesi" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "XXXXX ya da XXX XX formatında bir posta kodu girin." + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" +"XXXXXX/XXXX veya XXXXXXXXXX formatında geçerli bir doğum numarası girin." + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" +"Geçersiz isteğe bağlı Cinsiyet parametresi, geçerli değerler 'f' ve 'm'dir" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "Geçerli bir doğum numarası girin." + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "Geçerli bir IC numarası girin." + #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" msgstr "Baden-Wuerttemberg" @@ -1851,15 +2271,18 @@ msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:14 -#: contrib/localflavor/fi/forms.py:12 -#: contrib/localflavor/fr/forms.py:15 +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "XXXXX formatında posta kodu girin." -#: contrib/localflavor/de/forms.py:41 -msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." -msgstr "Lütfen XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formatında geçerli bir Alman kimlik numarası giriniz." +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Lütfen XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formatında geçerli bir Alman kimlik " +"numarası giriniz." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" @@ -2128,67 +2551,507 @@ msgid "Valencian Community" msgstr "Valencian Community" -#: contrib/localflavor/es/forms.py:19 +#: contrib/localflavor/es/forms.py:20 msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "01XXX - 52XXX aralığında ve formatında geçerli bir posta kodu girin." -#: contrib/localflavor/es/forms.py:39 -msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." -msgstr "6XXXXXXXX, 8XXXXXXXX ya da 9XXXXXXXX formatlarından birisine uyan geçerli bir posta kodu girin." - -#: contrib/localflavor/es/forms.py:66 -msgid "Please enter a valid NIF, NIE, or CIF." -msgstr "Lütfen geçerli bir NIF, NIE ya da CIF girin." +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"6XXXXXXXX, 8XXXXXXXX ya da 9XXXXXXXX formatlarından birisine uyan geçerli " +"bir posta kodu girin." #: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Lütfen geçerli bir NIF, NIE ya da CIF girin." + +#: contrib/localflavor/es/forms.py:68 msgid "Please enter a valid NIF or NIE." msgstr "Lütfen geçerli bir NIF ya da NIE girin." -#: contrib/localflavor/es/forms.py:68 +#: contrib/localflavor/es/forms.py:69 msgid "Invalid checksum for NIF." msgstr "Yanlış NIF sağlama toplamı." -#: contrib/localflavor/es/forms.py:69 +#: contrib/localflavor/es/forms.py:70 msgid "Invalid checksum for NIE." msgstr "Yanlış NIE sağlama toplamı." -#: contrib/localflavor/es/forms.py:70 +#: contrib/localflavor/es/forms.py:71 msgid "Invalid checksum for CIF." msgstr "Yanlış CIF sağlama toplamı." -#: contrib/localflavor/es/forms.py:142 -msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "Lütfen XXXX-XXXX-XX-XXXXXXXXXX formatında geçerli bir banka hesabı numarası girin." - #: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" +"Lütfen XXXX-XXXX-XX-XXXXXXXXXX formatında geçerli bir banka hesabı numarası " +"girin." + +#: contrib/localflavor/es/forms.py:144 msgid "Invalid checksum for bank account number." msgstr "Banka hesabı numarası için geçersiz sağlama toplamı." -#: contrib/localflavor/fi/forms.py:28 +#: contrib/localflavor/fi/forms.py:29 msgid "Enter a valid Finnish social security number." msgstr "Geçerli bir Finlandiya sosyal güvenlik numarası girin." -#: contrib/localflavor/in_/forms.py:14 +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "Telefon numaraları 0X XX XX XX XX formatında olmalıdır." + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "Geçerli bir posta kodu girin" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Geçerli bir telefon numarası girin" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "Geçerli bir araç plaka numarası girin" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "Geçerli bir NIK/KTP numarası girin" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "Bali" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "Banten" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "Bengkulu" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "Yogyakarta" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "Jakarta" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "Gorontalo" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "Jambi" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "Jawa Barat" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "Jawa Tengah" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "Jawa Timur" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "Kalimantan Barat" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "Kalimantan Selatan" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "Kalimantan Tengah" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "Kalimantan Timur" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "Kepulauan Bangka-Belitung" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "Kepulauan Riau" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "Lampung" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "Maluku" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "Maluku Utara" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "Nanggroe Aceh Darussalam" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "Nusa Tenggara Barat" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "Nusa Tenggara Timur" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "Papua" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "Papua Barat" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "Riau" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "Sulawesi Barat" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "Sulawesi Selatan" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "Sulawesi Tengah" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "Sulawesi Tenggara" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "Sulawesi Utara" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "Sumatera Barat" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "Sumatera Selatan" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "Sumatera Utara" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "Magelang" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "Surakarta - Solo" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "Madiun" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "Kediri" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "Tapanuli" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "Kepulauan Bangka Belitung" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "Corps Consulate" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "Corps Diplomatic" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "Bandung" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "Sulawesi Utara Daratan" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "NTT - Timor" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "Sulawesi Utara Kepulauan" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "NTB - Lombok" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "Papua dan Papua Barat" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "Cirebon" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "NTB - Sumbawa" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "NTT - Flores" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "NTT - Sumba" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "Bogor" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "Pekalongan" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "Semarang" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "Pati" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "Surabaya" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "Madura" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "Malang" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "Jember" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "Banyumas" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "Federal Hükümet" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "Bojonegoro" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "Purwakarta" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "Sidoarjo" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "Garut" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "Antrim" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "Armagh" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "Carlow" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "Cavan" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "Clare" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "Cork" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "Derry" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "Donegal" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "Down" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "Dublin" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "Fermanagh" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "Galway" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "Kerry" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "Kildare" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "Kilkenny" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "Laois" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "Leitrim" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "Limerick" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "Longford" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "Louth" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "Mayo" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "Meath" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "Monaghan" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "Offaly" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "Roscommon" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "Sligo" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "Tipperary" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "Tyrone" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "Waterford" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "Westmeath" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "Wexford" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "Wicklow" + +#: contrib/localflavor/in_/forms.py:15 msgid "Enter a zip code in the format XXXXXXX." msgstr "XXXXXXX formatında bir posta kodu girin." -#: contrib/localflavor/is_/forms.py:17 -msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "Geçerli bir İzlanda kimlik numarası girin. Format: XXXXXX-XXXX." -#: contrib/localflavor/is_/forms.py:18 +#: contrib/localflavor/is_/forms.py:19 msgid "The Icelandic identification number is not valid." msgstr "Geçersiz İzlanda kimlik numarası." -#: contrib/localflavor/it/forms.py:14 +#: contrib/localflavor/it/forms.py:15 msgid "Enter a valid zip code." msgstr "Geçerli bir posta kodu girin." -#: contrib/localflavor/it/forms.py:43 +#: contrib/localflavor/it/forms.py:44 msgid "Enter a valid Social Security number." msgstr "Geçerli bir Sosyal Güvenlik numarası girin." -#: contrib/localflavor/it/forms.py:68 +#: contrib/localflavor/it/forms.py:69 msgid "Enter a valid VAT number." msgstr "Geçerli bir VAT girin." @@ -2384,6 +3247,10 @@ msgid "Okinawa" msgstr "Okinawa" +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "Geçerli bir Kuveyt kimlik numarası girin" + #: contrib/localflavor/mx/mx_states.py:12 msgid "Aguascalientes" msgstr "Aguascalientes" @@ -2512,15 +3379,11 @@ msgid "Zacatecas" msgstr "Zacatecas" -#: contrib/localflavor/nl/forms.py:21 +#: contrib/localflavor/nl/forms.py:22 msgid "Enter a valid postal code" msgstr "Geçerli bir posta kodu girin" -#: contrib/localflavor/nl/forms.py:52 -msgid "Enter a valid phone number" -msgstr "Geçerli bir telefon numarası girin" - -#: contrib/localflavor/nl/forms.py:78 +#: contrib/localflavor/nl/forms.py:79 msgid "Enter a valid SoFi number" msgstr "Geçerli bir SoFi numarası girin" @@ -2572,15 +3435,15 @@ msgid "Zuid-Holland" msgstr "Zuid-Holland" -#: contrib/localflavor/no/forms.py:33 +#: contrib/localflavor/no/forms.py:34 msgid "Enter a valid Norwegian social security number." msgstr "Geçerli bir Norveç Sosyal Güvenlik numarası girin." -#: contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:25 msgid "This field requires 8 digits." msgstr "Bu alan 8 rakam gerektirmektedir." -#: contrib/localflavor/pe/forms.py:52 +#: contrib/localflavor/pe/forms.py:53 msgid "This field requires 11 digits." msgstr "Bu alan 11 rakam gerektirmektedir." @@ -2593,22 +3456,25 @@ msgstr "Ulusal Kimlik Numarası için geçersiz sağlama toplamı." #: contrib/localflavor/pl/forms.py:71 -msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." -msgstr "XXX-XXX-XX-XX or XX-XX-XXX-XXX formatında geçerli bir vergi numarası (NIP) girin." +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" +"XXX-XXX-XX-XX or XX-XX-XXX-XXX formatında geçerli bir vergi numarası (NIP) " +"girin." #: contrib/localflavor/pl/forms.py:72 msgid "Wrong checksum for the Tax Number (NIP)." msgstr "Vergi Numarası (NIP) için geçersiz sağlama toplamı." -#: contrib/localflavor/pl/forms.py:111 -msgid "National Business Register Number (REGON) consists of 7 or 9 digits." -msgstr "Ulusal İş Kayıt Numarası (REGON) 7 veya 9 rakamdan oluşmaktadır." - -#: contrib/localflavor/pl/forms.py:112 +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "Ulusal İş Kayıt Numarası (REGON) 9 veya 17 rakamdan oluşmaktadır." + +#: contrib/localflavor/pl/forms.py:110 msgid "Wrong checksum for the National Business Register Number (REGON)." msgstr "Ulusal İş Kayıt Numarası (REGON) için geçersiz sağlama toplamı." -#: contrib/localflavor/pl/forms.py:155 +#: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." msgstr "XX-XXX formatında bir posta kodu girin." @@ -2676,6 +3542,15 @@ msgid "West Pomerania" msgstr "Batı Pomerania" +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "XXXX-XXX formatında posta kodu girin." + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" +"Telefon numaraları 9 rakamdan oluşmalı, veyahut + veya 00 ile başlamalıdır." + #: contrib/localflavor/ro/forms.py:19 msgid "Enter a valid CIF." msgstr "Geçerli bir CIF girin." @@ -2696,9 +3571,105 @@ msgid "Enter a valid postal code in the format XXXXXX" msgstr "XXXXXX formatında bir posta kodu girin." -#: contrib/localflavor/sk/forms.py:30 -msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "XXXXX ya da XXX XX formatında bir posta kodu girin." +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "Geçerli bir İsveç organizasyon numarası girin." + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "Geçerli bir İsveç kimlik numarası girin." + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "Kordinat numaralarına izin verilmemektedir" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "XXXXX formatında geçerli bir İsveç posta kodu girin." + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "Stockholm" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "Västerbotten" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "Norrbotten" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "Uppsala" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "Södermanland" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "Östergötland" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "Jönköping" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "Kronoberg" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "Kalmar" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "Gotland" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "Blekinge" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "Skåne" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "Halland" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "Västra Götaland" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "Värmland" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "Örebro" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "Västmanland" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "Dalarna" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "Gävleborg" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "Västernorrland" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "Jämtland" #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -3332,19 +4303,44 @@ msgid "Wales" msgstr "Wales" -#: contrib/localflavor/us/forms.py:16 +#: contrib/localflavor/us/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "XXXXX ya da XXXXX-XXXX biçiminde bir posta kodu yazın." -#: contrib/localflavor/us/forms.py:54 +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "Telefon numaraları XXX-XXX-XXXX formatında olmalıdır." + +#: contrib/localflavor/us/forms.py:55 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "XXX-XX-XXXX formatında geçerli bir A.B.D. Sosyal Güvenlik Numarası giriniz." - -#: contrib/localflavor/za/forms.py:20 +msgstr "" +"XXX-XX-XXXX formatında geçerli bir A.B.D. Sosyal Güvenlik Numarası giriniz." + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "ABD devlet veya bölge adı girin." + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "Şehir Kodu (iki karakter)" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Telefon numarası" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX formatında geçerli bir CI girin." + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "Geçerli bir CI numarası girin." + +#: contrib/localflavor/za/forms.py:21 msgid "Enter a valid South African ID number" msgstr "Geçerli bir Güney Afrika Cumhuriyeti kimlik numarası girin" -#: contrib/localflavor/za/forms.py:54 +#: contrib/localflavor/za/forms.py:55 msgid "Enter a valid South African postal code" msgstr "Geçerli bir Güney Afrika Cumhuriyeti posta kodu girin" @@ -3384,21 +4380,33 @@ msgid "Western Cape" msgstr "Batı Cape" +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "tembel mesaj" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "eski adres" #: contrib/redirects/models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Buraya tam dosya yolu, alan adı kullanılmadan yazılmalı. Örnek: '/events/search/'." +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Buraya tam dosya yolu, alan adı kullanılmadan yazılmalı. Örnek: '/events/" +"search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "yeni adres" #: contrib/redirects/models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Buraya tam dosya yolu (yukarıdaki gibi), ya da 'http://' ile başlayan tam adres yazılmalı." +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Buraya tam dosya yolu (yukarıdaki gibi), ya da 'http://' ile başlayan tam " +"adres yazılmalı." #: contrib/redirects/models.py:13 msgid "redirect" @@ -3440,241 +4448,404 @@ msgid "sites" msgstr "siteler" -#: db/models/fields/__init__.py:348 -#: db/models/fields/__init__.py:683 +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Geçerli bir değer girin." + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "Geçerli bir URL girin." + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "Bu URL geçersiz bir link gibi duruyor." + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Lütfen sadece harf, rakam, altçizgi veya çizgiden oluşan değer girin." + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "Geçerli bir IPv4 adresi girin." + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "Sadece virgülle ayrılmış sayılar girin." + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" +"Bu değerin en az %(limit_value)s karakterden oluştuğundan emin olun (şu anki " +"karakter sayısı: %(show_value)s)." + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" +"Bu değerin %(limit_value)s karakterden az veya eşit olduğundan emin olun." + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" +"Bu değerin %(limit_value)s karakterden çok veya eşit olduğundan emin olun." + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Bu değerin en az %(limit_value)d karakterden oluştuğundan emin olun (şu anki " +"karakter sayısı: %(show_value)d)." + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" +"Bu değerin en fazla %(limit_value)d karakterden oluştuğundan emin olun (şu " +"anki karakter sayısı: %(show_value)d)." + +#: db/models/base.py:822 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" +"%(field_name)s değeri %(date_field)s alanı %(lookup)s işlemi için tek " +"olmalıdır." + +#: db/models/base.py:837 db/models/base.py:845 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(field_label)s alanına sahip %(model_name)s zaten mevcuttur." + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "%r değerli geçerli bir seçim değil." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "Bu alan boş bırakılamaz." + +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "Bu alan boş bırakılamaz. " + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Alan türü: %(field_type)s" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "Tamsayı" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 msgid "This value must be an integer." msgstr "Bu değer tamsayı olmalı." -#: db/models/fields/__init__.py:379 +#: db/models/fields/__init__.py:490 msgid "This value must be either True or False." msgstr "Bu değer True ya da False olabilir." -#: db/models/fields/__init__.py:412 -msgid "This field cannot be null." -msgstr "Bu alan boş bırakılamaz." - -#: db/models/fields/__init__.py:428 -msgid "Enter only digits separated by commas." -msgstr "Sadece virgülle ayrılmış sayılar girin." - -#: db/models/fields/__init__.py:459 +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "Mantıksal (True ya da False)" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Karakter disizi (en fazla %(max_length)s)" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "Virgülle ayrılmış tamsayılar" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "Tarih (saat yok)" + +#: db/models/fields/__init__.py:585 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "YYYY-AA-GG formatında tarih girin." -#: db/models/fields/__init__.py:468 +#: db/models/fields/__init__.py:586 #, python-format msgid "Invalid date: %s" msgstr "Geçersiz tarih: %s" -#: db/models/fields/__init__.py:532 -#: db/models/fields/__init__.py:550 +#: db/models/fields/__init__.py:667 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." -msgstr "YYYY-MM-DD HH:MM[:ss[.uuuuuu]] formatında geçerli bir tarih ve saat girin." - -#: db/models/fields/__init__.py:586 +msgstr "" +"YYYY-MM-DD HH:MM[:ss[.uuuuuu]] formatında geçerli bir tarih ve saat girin." + +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "Tarih (saat var)" + +#: db/models/fields/__init__.py:735 msgid "This value must be a decimal number." msgstr "Bu değer ondalık sayı olmalıdır." -#: db/models/fields/__init__.py:719 +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "Ondalık sayı:" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "E-posta adresi" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Dosya yolu" + +#: db/models/fields/__init__.py:822 +msgid "This value must be a float." +msgstr "Bu değer ondalık sayı olmalı." + +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "Floating point rakamı" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "Büyük (8 bayt) integer" + +#: db/models/fields/__init__.py:912 msgid "This value must be either None, True or False." msgstr "Bu değer None, True ya da False olabilir." -#: db/models/fields/__init__.py:817 -#: db/models/fields/__init__.py:831 +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "Mantıksal (True, False, ya da None)" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "Metin" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "Saat" + +#: db/models/fields/__init__.py:1025 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." msgstr "HH:MM[:ss[.uuuuuu]] formatında geçerli bir saat girin." -#: db/models/fields/related.py:761 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "\"Ctrl\" ve Mac'de \"Command\" tuşunu basılı tutarak birden fazla seçimde bulunabilirsiniz." - -#: db/models/fields/related.py:838 +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "XML metni" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "Birincil anahtarı %(pk)r olan %(model)s mevcut değil." + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "Yabancı Anahtar (türü ilişkili alana göre belirlenir)" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "Bire-bir ilişki" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "Çoğa-çok ilişki" + +#: db/models/fields/related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"\"Ctrl\" (Mac'de \"Command\") tuşunu basılı tutularak birden fazla seçim " +"yapılabilir." + +#: db/models/fields/related.py:1061 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Lütfen geçerli bir %(self)s numarası girin. %(value)r değeri geçersiz." -msgstr[1] "Lütfen geçerli %(self)s numaraları girin. %(value)r değerleri geçersiz." - -#: forms/fields.py:54 +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Lütfen geçerli %(self)s ID'ler giriniz. %(value)r değeri geçersizdir." + +#: forms/fields.py:65 msgid "This field is required." msgstr "Bu alan zorunludur." -#: forms/fields.py:55 -msgid "Enter a valid value." -msgstr "Geçerli bir değer girin." - -#: forms/fields.py:138 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Bu değerin en fazla %(max)d karakterden oluştuğundan emin olun (şu anki karakter sayısı: %(length)d)." - -#: forms/fields.py:139 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "Bu değerin en az %(min)d karakterden oluştuğundan emin olun (şu anki karakter sayısı: %(length)d)." - -#: forms/fields.py:166 +#: forms/fields.py:204 msgid "Enter a whole number." msgstr "Tam sayı girin." -#: forms/fields.py:167 -#: forms/fields.py:196 -#: forms/fields.py:225 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Bu değerin %s karakterden az veya eşit olduğundan emin ol." - -#: forms/fields.py:168 -#: forms/fields.py:197 -#: forms/fields.py:226 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Bu değerin %s karakterden çok veya eşit olduğundan emin ol." - -#: forms/fields.py:195 -#: forms/fields.py:224 +#: forms/fields.py:235 forms/fields.py:256 msgid "Enter a number." msgstr "Bir sayı girin." -#: forms/fields.py:227 +#: forms/fields.py:259 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Toplamda en fazla %s sayının olduğundan emin olun." -#: forms/fields.py:228 +#: forms/fields.py:260 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "En fazla %s onluk yerin olduğundan emin olun." -#: forms/fields.py:229 +#: forms/fields.py:261 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Onluk kısımdan önce en fazla %s sayı olduğundan emin olun." -#: forms/fields.py:287 -#: forms/fields.py:848 +#: forms/fields.py:323 forms/fields.py:838 msgid "Enter a valid date." msgstr "Geçerli bir tarih girin." -#: forms/fields.py:321 -#: forms/fields.py:849 +#: forms/fields.py:351 forms/fields.py:839 msgid "Enter a valid time." msgstr "Geçerli bir zaman girin." -#: forms/fields.py:360 +#: forms/fields.py:377 msgid "Enter a valid date/time." msgstr "Geçerli bir tarih/zaman girin." -#: forms/fields.py:446 +#: forms/fields.py:435 msgid "No file was submitted. Check the encoding type on the form." msgstr "Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin." -#: forms/fields.py:447 +#: forms/fields.py:436 msgid "No file was submitted." msgstr "Hiçbir dosya gönderilmedi." -#: forms/fields.py:448 +#: forms/fields.py:437 msgid "The submitted file is empty." msgstr "Gönderilen dosya boş." -#: forms/fields.py:477 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir dosya." - -#: forms/fields.py:538 -msgid "Enter a valid URL." -msgstr "Geçerli bir URL girin." - -#: forms/fields.py:539 -msgid "This URL appears to be a broken link." -msgstr "Bu URL geçersiz bir link gibi duruyor." - -#: forms/fields.py:618 -#: forms/fields.py:696 +#: forms/fields.py:438 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Bu dosya adının en fazla %(max)d karakterden oluştuğundan emin olun (şu anki " +"karakter sayısı: %(length)d)." + +#: forms/fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir " +"dosya." + +#: forms/fields.py:596 forms/fields.py:671 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Geçerli bir seçimde bulunun; %(value)s mevcut değerlerden biri değil." -#: forms/fields.py:697 -#: forms/fields.py:758 -#: forms/models.py:654 +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1007 msgid "Enter a list of values." msgstr "Değer listesi giriniz." -#: forms/fields.py:877 -msgid "Enter a valid IPv4 address." -msgstr "Geçerli bir IPv4 adresi girin." - -#: forms/fields.py:887 -msgid "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "Lütfen sadece harf, rakam, altçizgi veya çizgiden oluşan değer girin." - -#: forms/formsets.py:242 -#: forms/formsets.py:244 +#: forms/formsets.py:298 forms/formsets.py:300 msgid "Order" msgstr "Sıralama" -#: forms/models.py:268 -#: forms/models.py:277 +#: forms/models.py:567 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Lütfen %(field)s alanları için mükerrer kayıt problemini düzeltin." + +#: forms/models.py:571 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" +"Lütfen %(field)s alanı için mükerrer verileri düzeltin, bunlar eşsiz " +"olmalıdır." + +#: forms/models.py:577 #, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(field_label)s alanına sahip %(model_name)s zaten mevcuttur." - -#: forms/models.py:584 +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"Lütfen %(field_name)s alanı için mükerrer verileri düzeltin, bunlar %" +"(date_field)s alanı %(lookup)s sorgulamaları için eşsiz olmalıdır." + +#: forms/models.py:585 +msgid "Please correct the duplicate values below." +msgstr "Lütfen aşağıdaki mükerrer kayıtları düzeltin." + +#: forms/models.py:860 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" +"İçeride belirtilmiş yabancı anahtar ebeveyin nesnenin birincil anahtarı ile " +"uyuşmadı." + +#: forms/models.py:926 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Geçerli bir seçimde bulunun; seçiminiz mevcut değerlerden birisi değil." - -#: forms/models.py:655 +msgstr "" +"Geçerli bir seçimde bulunun; seçiminiz mevcut değerlerden birisi değil." + +#: forms/models.py:1008 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Geçerli bir seçimde bulunun; %s mevcut değerlerden biri değil." -#: template/defaultfilters.py:706 +#: forms/models.py:1010 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "\"%s\" birincil anahtar için geçerli bir değer değil." + +#: template/defaultfilters.py:781 msgid "yes,no,maybe" msgstr "evet,hayır,olabilir" -#: template/defaultfilters.py:737 +#: template/defaultfilters.py:812 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d bayt" -#: template/defaultfilters.py:739 +#: template/defaultfilters.py:814 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:741 +#: template/defaultfilters.py:816 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:742 +#: template/defaultfilters.py:817 #, python-format msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "p.m." msgstr "ö.s." -#: utils/dateformat.py:42 +#: utils/dateformat.py:43 msgid "a.m." msgstr "ö.ö." -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "PM" msgstr "ÖS" -#: utils/dateformat.py:48 +#: utils/dateformat.py:49 msgid "AM" msgstr "ÖÖ" -#: utils/dateformat.py:97 +#: utils/dateformat.py:98 msgid "midnight" msgstr "gece yarısı" -#: utils/dateformat.py:99 +#: utils/dateformat.py:100 msgid "noon" msgstr "öğlen" @@ -3742,28 +4913,23 @@ msgid "February" msgstr "Şubat" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "Mart" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "Nisan" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "Mayıs" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "Haziran" -#: utils/dates.py:19 -#: utils/dates.py:31 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "Temmuz" @@ -3863,7 +5029,7 @@ msgid "Dec." msgstr "Ara." -#: utils/text.py:128 +#: utils/text.py:130 msgid "or" msgstr "ya da" @@ -3871,80 +5037,77 @@ msgid "year" msgid_plural "years" msgstr[0] "yıl" -msgstr[1] "yıl" #: utils/timesince.py:22 msgid "month" msgid_plural "months" msgstr[0] "ay" -msgstr[1] "ay" #: utils/timesince.py:23 msgid "week" msgid_plural "weeks" msgstr[0] "hafta" -msgstr[1] "hafta" #: utils/timesince.py:24 msgid "day" msgid_plural "days" msgstr[0] "gün" -msgstr[1] "gün" #: utils/timesince.py:25 msgid "hour" msgid_plural "hours" msgstr[0] "saat" -msgstr[1] "saat" #: utils/timesince.py:26 msgid "minute" msgid_plural "minutes" msgstr[0] "dakika" -msgstr[1] "dakika" - -#: utils/timesince.py:43 + +#: utils/timesince.py:45 msgid "minutes" msgstr "dakika" -#: utils/timesince.py:48 +#: utils/timesince.py:50 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" -#: utils/timesince.py:54 +#: utils/timesince.py:56 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:403 +#: utils/translation/trans_real.py:518 msgid "DATE_FORMAT" msgstr "j F Y" -#: utils/translation/trans_real.py:405 +#: utils/translation/trans_real.py:519 +msgid "DATETIME_FORMAT" +msgstr "j F Y, H:i" + +#: utils/translation/trans_real.py:520 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:421 +#: utils/translation/trans_real.py:541 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:422 +#: utils/translation/trans_real.py:542 msgid "MONTH_DAY_FORMAT" msgstr "j F" -#: views/generic/create_update.py:114 +#: views/generic/create_update.py:115 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s başarıyla oluşturuldu." -#: views/generic/create_update.py:156 +#: views/generic/create_update.py:158 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s başarıyla güncellendi." -#: views/generic/create_update.py:198 +#: views/generic/create_update.py:201 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s silindi." - diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/tr/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/tr/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/tr/LC_MESSAGES/djangojs.po --- a/web/lib/django/conf/locale/tr/LC_MESSAGES/djangojs.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/tr/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -1,113 +1,123 @@ # This file is distributed under the same license as the Django package. -# +# Metin Amiroff , 2010. msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-09-30 01:31+0300\n" -"PO-Revision-Date: 2006-09-30 01:31+0300\n" -"Last-Translator: Bahadır Kandemir \n" +"POT-Creation-Date: 2010-05-02 01:10+0300\n" +"PO-Revision-Date: 2010-05-02 01:13+0300\n" +"Last-Translator: Metin Amiroff \n" "Language-Team: Bahadır Kandemir \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: contrib/admin/media/js/SelectFilter2.js:33 +#: contrib/admin/media/js/SelectFilter2.js:37 #, perl-format msgid "Available %s" -msgstr "Mevcut %s" +msgstr "Toplam %s" -#: contrib/admin/media/js/SelectFilter2.js:41 +#: contrib/admin/media/js/SelectFilter2.js:45 msgid "Choose all" msgstr "Hepsini seç" -#: contrib/admin/media/js/SelectFilter2.js:46 +#: contrib/admin/media/js/SelectFilter2.js:50 msgid "Add" msgstr "Ekle" -#: contrib/admin/media/js/SelectFilter2.js:48 +#: contrib/admin/media/js/SelectFilter2.js:52 msgid "Remove" msgstr "Kaldır" -#: contrib/admin/media/js/SelectFilter2.js:53 +#: contrib/admin/media/js/SelectFilter2.js:57 #, perl-format msgid "Chosen %s" msgstr "Seçilen %s" -#: contrib/admin/media/js/SelectFilter2.js:54 +#: contrib/admin/media/js/SelectFilter2.js:58 msgid "Select your choice(s) and click " -msgstr "Seçiminizi yapın ve tıklayın " +msgstr "Seçiminizi yapın ve yandaki düğmenin aynısına tıklayın " -#: contrib/admin/media/js/SelectFilter2.js:59 +#: contrib/admin/media/js/SelectFilter2.js:63 msgid "Clear all" msgstr "Hepsini temizle" -#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/actions.js:17 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "%(sel)s / %(cnt)s seçili" + #: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 msgid "" "January February March April May June July August September October November " "December" -msgstr "Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım " -"Aralık" - -#: contrib/admin/media/js/dateparse.js:27 -msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi" +msgstr "" +"Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık" #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" msgstr "P P S Ç P C C" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Göster" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Gizle" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Now" msgstr "Şimdi" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 msgid "Clock" msgstr "Saat" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Choose a time" msgstr "Saat seçin" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 msgid "Midnight" msgstr "Geceyarısı" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 msgid "6 a.m." msgstr "Sabah 6" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 msgid "Noon" msgstr "Öğle" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 msgid "Cancel" msgstr "İptal" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 msgid "Today" msgstr "Bugün" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 msgid "Calendar" msgstr "Takvim" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 msgid "Yesterday" msgstr "Dün" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 msgid "Tomorrow" msgstr "Yarın" - -msgid "Show" -msgstr "Göster" - -msgid "Hide" -msgstr "Gizle" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/tr/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/tr/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/tr/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'd F Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = 'd F Y H:i:s' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'd F' +SHORT_DATE_FORMAT = 'd M Y' +SHORT_DATETIME_FORMAT = 'd M Y H:i:s' +FIRST_DAY_OF_WEEK = 1 # Pazartesi +DATE_INPUT_FORMATS = ( + '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' + '%Y-%m-%d', '%y-%m-%d', # '2006-10-25', '06-10-25' + # '%d %B %Y', '%d %b. %Y', # '25 Ekim 2006', '25 Eki. 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' +) +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +NUMBER_GROUPING = 3 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/uk/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/uk/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/uk/LC_MESSAGES/django.po --- a/web/lib/django/conf/locale/uk/LC_MESSAGES/django.po Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/locale/uk/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -4185,7 +4185,7 @@ #: .\forms\fields.py:139 .\newforms\fields.py:125 msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "" -"Переконайтеся, що це значення має не менще %(max)d символів (зараз %(length)" +"Переконайтеся, що це значення має не менще %(min)d символів (зараз %(length)" "d)." #: .\forms\fields.py:167 .\forms\fields.py:196 .\forms\fields.py:225 diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/uk/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/uk/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/uk/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y р.' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = ' ' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/vi/LC_MESSAGES/django.mo Binary file web/lib/django/conf/locale/vi/LC_MESSAGES/django.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/vi/LC_MESSAGES/django.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/vi/LC_MESSAGES/django.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5058 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-02-21 13:49+0100\n" +"PO-Revision-Date: 2010-02-07 16:11+0700\n" +"Last-Translator: Hung. NGUYEN Manh \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "Tiếng Ả Rập" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "Tiếng Bun-ga-ri" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "Séc" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "Xứ Wales" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "Tiếng Đan Mạch" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "Tiếng Đức" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "Tiếng Hy Lạp" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "Tiếng Anh" + +#: conf/global_settings.py:55 +msgid "Spanish" +msgstr "Tiếng Tây Ban Nha" + +#: conf/global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Estonian" +msgstr "Tiếng Estonia" + +#: conf/global_settings.py:58 +msgid "Basque" +msgstr "Tiếng Baxcơ" + +#: conf/global_settings.py:59 +msgid "Persian" +msgstr "Tiếng Ba Tư" + +#: conf/global_settings.py:60 +msgid "Finnish" +msgstr "Tiếng Phần Lan" + +#: conf/global_settings.py:61 +msgid "French" +msgstr "Tiếng Pháp" + +#: conf/global_settings.py:62 +msgid "Frisian" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Irish" +msgstr "Tiếng Ai-len" + +#: conf/global_settings.py:64 +msgid "Galician" +msgstr "Tiếng Pháp cổ" + +#: conf/global_settings.py:65 +msgid "Hebrew" +msgstr "Tiếng Do Thái cổ" + +#: conf/global_settings.py:66 +msgid "Hindi" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Croatian" +msgstr "Tiếng Croatia" + +#: conf/global_settings.py:68 +msgid "Hungarian" +msgstr "Tiếng Hung-ga-ri" + +#: conf/global_settings.py:69 +msgid "Icelandic" +msgstr "Tiếng Aixơlen" + +#: conf/global_settings.py:70 +msgid "Italian" +msgstr "Tiếng Ý" + +#: conf/global_settings.py:71 +msgid "Japanese" +msgstr "Tiếng Nhật Bản" + +#: conf/global_settings.py:72 +msgid "Georgian" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Khmer" +msgstr "Tiếng Khơ-me" + +#: conf/global_settings.py:74 +msgid "Kannada" +msgstr "Tiếng Kannada" + +#: conf/global_settings.py:75 +msgid "Korean" +msgstr "Tiếng Hàn Quốc" + +#: conf/global_settings.py:76 +msgid "Lithuanian" +msgstr "Tiếng Lat-vi" + +#: conf/global_settings.py:77 +msgid "Latvian" +msgstr "Ngôn ngữ vùng Bantic" + +#: conf/global_settings.py:78 +msgid "Macedonian" +msgstr "Tiếng Maxêđôni" + +#: conf/global_settings.py:79 +msgid "Dutch" +msgstr "Tiếng Hà Lan" + +#: conf/global_settings.py:80 +msgid "Norwegian" +msgstr "Tiếng Nauy" + +#: conf/global_settings.py:81 +msgid "Polish" +msgstr "Tiếng Ba lan" + +#: conf/global_settings.py:82 +msgid "Portuguese" +msgstr "" + +#: conf/global_settings.py:83 +msgid "Brazilian Portuguese" +msgstr "" + +#: conf/global_settings.py:84 +msgid "Romanian" +msgstr "Tiếng Ru-ma-ni" + +#: conf/global_settings.py:85 +msgid "Russian" +msgstr "Tiếng Nga" + +#: conf/global_settings.py:86 +msgid "Slovak" +msgstr "Ngôn ngữ Slô-vac" + +#: conf/global_settings.py:87 +msgid "Slovenian" +msgstr "Tiếng Slôven" + +#: conf/global_settings.py:88 +msgid "Albanian" +msgstr "" + +#: conf/global_settings.py:89 +msgid "Serbian" +msgstr "Tiếng Xéc-bi" + +#: conf/global_settings.py:90 +msgid "Serbian Latin" +msgstr "" + +#: conf/global_settings.py:91 +msgid "Swedish" +msgstr "Tiếng Thụy Điển" + +#: conf/global_settings.py:92 +msgid "Tamil" +msgstr "Tiếng Ta-min" + +#: conf/global_settings.py:93 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:94 +msgid "Thai" +msgstr "" + +#: conf/global_settings.py:95 +msgid "Turkish" +msgstr "Tiếng Thổ Nhĩ Kỳ" + +#: conf/global_settings.py:96 +msgid "Ukrainian" +msgstr "Tiếng Ukraina" + +#: conf/global_settings.py:97 +#, fuzzy +msgid "Vietnamese" +msgstr "Thành phố Viên" + +#: conf/global_settings.py:98 +msgid "Simplified Chinese" +msgstr "Tiếng Trung Hoa giản thể" + +#: conf/global_settings.py:99 +msgid "Traditional Chinese" +msgstr "Tiếng Trung Hoa truyền thống" + +#: contrib/admin/actions.py:60 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "" + +#: contrib/admin/actions.py:67 contrib/admin/options.py:1096 +msgid "Are you sure?" +msgstr "Bạn có chắc chắn không?" + +#: contrib/admin/actions.py:85 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

                                            By %s:

                                            \n" +"
                                              \n" +msgstr "" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "Tất cả" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "Bất kì ngày nào" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "Hôm nay" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "7 ngày về trước" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "Tháng này" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "Năm nay" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 +msgid "Yes" +msgstr "Có" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:435 +msgid "No" +msgstr "Không" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:435 +msgid "Unknown" +msgstr "Chưa xác định" + +#: contrib/admin/helpers.py:19 +msgid "Action:" +msgstr "" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "Thời gian tác động" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "Thay đổi tin nhắn" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "" + +#: contrib/admin/options.py:139 contrib/admin/options.py:154 +msgid "None" +msgstr "Không" + +#: contrib/admin/options.py:558 +#, python-format +msgid "Changed %s." +msgstr "%s đã được thay đổi." + +#: contrib/admin/options.py:558 contrib/admin/options.py:568 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:797 +#: forms/models.py:544 +msgid "and" +msgstr "và" + +#: contrib/admin/options.py:563 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "%(name)s \"%(object)s\" đã được thêm vào." + +#: contrib/admin/options.py:567 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "%(list)s for %(name)s \"%(object)s\" đã được thay đổi." + +#: contrib/admin/options.py:572 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "%(name)s \"%(object)s\" đã bị xóa." + +#: contrib/admin/options.py:576 +msgid "No fields changed." +msgstr "Không có trường nào thay đổi" + +#: contrib/admin/options.py:642 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" được thêm vào thành công." + +#: contrib/admin/options.py:646 contrib/admin/options.py:679 +msgid "You may edit it again below." +msgstr "Bạn có thể sửa lại dưới đây." + +#: contrib/admin/options.py:656 contrib/admin/options.py:689 +#, python-format +msgid "You may add another %s below." +msgstr "Bạn có thể thêm vào %s dưới đây." + +#: contrib/admin/options.py:677 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" đã được thay đổi thành công." + +#: contrib/admin/options.py:685 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" đã được thêm vào thành công. Bạn có thể sửa lại dưới " +"đây." + +#: contrib/admin/options.py:738 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:756 +msgid "No action selected." +msgstr "" + +#: contrib/admin/options.py:836 +#, python-format +msgid "Add %s" +msgstr "Thêm %s" + +#: contrib/admin/options.py:862 contrib/admin/options.py:1074 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: contrib/admin/options.py:927 +#, python-format +msgid "Change %s" +msgstr "Thay đổi %s" + +#: contrib/admin/options.py:972 +msgid "Database error" +msgstr "Cơ sở dữ liệu bị lỗi" + +#: contrib/admin/options.py:1008 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1089 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" đã được xóa thành công." + +#: contrib/admin/options.py:1126 +#, python-format +msgid "Change history: %s" +msgstr "Thay đổi bản ghi: %s" + +#: contrib/admin/sites.py:22 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "Hãy nhập đúng tên đăng nhập và mật khẩu. Chú ý chữ hoa, chữ thường." + +#: contrib/admin/sites.py:310 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "Hãy đăng nhập lại vì giao dịch của bạn đã hết hiệu lực" + +#: contrib/admin/sites.py:317 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" + +#: contrib/admin/sites.py:333 contrib/admin/sites.py:339 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "Tên đăng nhập không thể chứa kí tự '@'." + +#: contrib/admin/sites.py:336 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Địa chỉ email của bạn không phải là tên đăng nhập. Hãy thử '%s'." + +#: contrib/admin/sites.py:392 +msgid "Site administration" +msgstr "Site quản trị hệ thống." + +#: contrib/admin/sites.py:406 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "Đăng nhập" + +#: contrib/admin/sites.py:451 +#, python-format +msgid "%s administration" +msgstr "%s quản trị" + +#: contrib/admin/util.py:170 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Một hoặc nhiều hơn %(fieldname)s trong %(name)s: %(obj)s" + +#: contrib/admin/util.py:175 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Một hoặc nhiều hơn %(fieldname)s trong %(name)s:" + +#: contrib/admin/widgets.py:75 +msgid "Date:" +msgstr "Ngày:" + +#: contrib/admin/widgets.py:75 +msgid "Time:" +msgstr "Giờ:" + +#: contrib/admin/widgets.py:99 +msgid "Currently:" +msgstr "Hiện tại:" + +#: contrib/admin/widgets.py:99 +msgid "Change:" +msgstr "Thay đổi:" + +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "Tìm" + +#: contrib/admin/widgets.py:241 +msgid "Add Another" +msgstr "Thêm vào" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Không tìm thấy trang nào" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Xin lỗi bạn! Trang mà bạn yêu cầu không tìm thấy." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:54 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:39 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: 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:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Lỗi máy chủ" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Lỗi máy chủ (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Lỗi máy chủ (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 "" +"Xảy ra lỗi. Lỗi này sẽ được gửi tới quản trị hệ thống qua email và sẽ sớm " +"được sửa chữa. Xin cảm ơn về sựu kiên nhẫn của bạn." + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:7 +#, python-format +msgid "" +"0 of %(total_count)s %(module_name)s selected" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "All %(total_count)s %(module_name)s selected" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:14 +msgid "Click here to select all objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:14 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:16 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/base.html:27 +msgid "Welcome," +msgstr "Chào mừng bạn," + +#: contrib/admin/templates/admin/base.html:32 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "Thay đổi mật khẩu" + +#: contrib/admin/templates/admin/base.html:47 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "Thoát" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "Thêm vào" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "Bản ghi nhớ" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:68 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Hãy sửa lỗi sai dưới đây" +msgstr[1] "Hãy sửa lại những lỗi sai dưới đây" + +#: contrib/admin/templates/admin/change_list.html:60 +#, python-format +msgid "Add %(name)s" +msgstr "Thêm vào %(name)s" + +#: contrib/admin/templates/admin/change_list.html:79 +msgid "Filter" +msgstr "Bộ lọc" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:294 +msgid "Delete" +msgstr "Xóa" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Xóa %(object_name)s '%(escaped_object)s' sẽ làm mất những dữ liệu có liên " +"quan. Tài khoản của bạn không được cấp quyển xóa những dữ liệu đi kèm theo." + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Bạn có chắc là muốn xóa %(object_name)s \"%(escaped_object)s\"?Tất cả những " +"dữ liệu đi kèm dưới đây cũng sẽ bị mất:" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "Có, tôi chắc chắn." + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "" + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "Thay đổi" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "Bạn không được cấp quyền chỉnh sửa bất cứ cái gì." + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "Không có gì tồn tại" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "Tên đăng nhập:" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "Mật khẩu:" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "Ngày/giờ" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "Người dùng" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "Hành động" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Hiện tất cả" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "Lưu lại" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "Một kết quả" +msgstr[1] "%(counter)s kết quả" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "Lưu mới" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "Lưu và thêm vào" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "Lưu và tiếp tục chỉnh sửa" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Đầu tiên, điền tên đăng nhập và mật khẩu. Sau đó mới có thể chỉnh sửa thêm " +"nhiều user khác." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Hãy nhập mật khẩu mới cho người sử dụng %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "Mật khẩu" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "Nhập lại mật khẩu" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "Nhập dãy mật mã trên để xác minh lại" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:53 +#: contrib/admin/templates/admin/edit_inline/tabular.html:99 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:56 +#: contrib/admin/templates/admin/edit_inline/tabular.html:102 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "Bạn muốn xóa?" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Cảm ơn bạn đã dành thời gian với website này" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Đăng nhập lại" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "Thay đổi mật khẩu" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Mật khẩu được thay đổi thành công" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Mật khẩu của bạn đã được thay đổi" + +#: contrib/admin/templates/registration/password_change_form.html:21 +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 "" +"Hãy nhập lại mật khẩu cũ và sau đó nhập mật khẩu mới hai lần để chúng tôi có " +"thể kiểm tra lại xem bạn đã gõ chính xác hay chưa." + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "Mật khẩu cũ" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "Mật khẩu mới" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "Thay đổi mật khẩu" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: 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 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Lập lại mật khẩu" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "Hoàn thành việc lập lại mật khẩu" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Mật khẩu của bạn đã được lập lại. Bạn hãy thử đăng nhập." + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "Xác nhận việc lập lại mật khẩu" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "Nhập mật khẩu mới" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Hãy nhập mật khẩu mới hai lần để chúng tôi có thể kiểm tra xem bạn đã gõ " +"chính xác chưa" + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "Mật khẩu mới" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "Nhập lại mật khẩu:" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "Lập lại mật khẩu không thành công" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Lấy lại mật khẩu thành công" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Chúng tôi vừa gửi cho bạn những hướng dẫn để bạn lập lại mất khẩu tới địa " +"chỉ email bạn đã đăng kí. Bạn sẽ nhận được nó trong chốc lát." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Bạn nhận được email này vì bạn đã yêu cầu lập lại mật khẩu" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "cho tài khoản của bạn ở %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "Hãy vào đường link dưới đây và chọn một mật khẩu mới" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "Tên đăng nhập của bạn(nếu bạn có quên nó):" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "Cảm ơn bạn đã sử dụng website của chúng tôi!" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" +"Quên mật khẩu? Nhập địa chỉ email của bạn vào bên dưới, chúng tôi sẽ gửi " +"những hướng dẫn để làm lại mật khẩu mới." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Địa chỉ email:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Làm lại mật khẩu" + +#: contrib/admin/templatetags/admin_list.py:240 +msgid "All dates" +msgstr "Tất cả các ngày" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s" +msgstr "Chọn %s" + +#: contrib/admin/views/main.py:70 +#, python-format +msgid "Select %s to change" +msgstr "Chọn %s để thay đổi" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "Mẫu" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "Nhãn:" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "Lọc:" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "Xem:" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "Ứng dụng %r không tìm thấy" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "Mẫu %(model_name)r không tìm thấy trong ứng dụng %(app_label)r" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "mẫu:" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "liên quan tới đối tượng `%(app_label)s.%(object_name)s`" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "Tất cả %s" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "số của %s" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

                                              To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                                              \n" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Hiện ID" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Sửa lại đối tượng này (ở cửa sổ hiện tại)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Sửa lại đối tượng này (trong cửa sổ mới)" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Như trên nhưng mở trang quản trị ở một cửa sổ mới." + +#: contrib/auth/admin.py:29 +msgid "Personal info" +msgstr "Thông tin cá nhân" + +#: contrib/auth/admin.py:30 +msgid "Permissions" +msgstr "" + +#: contrib/auth/admin.py:31 +msgid "Important dates" +msgstr "Những ngày quan trọng" + +#: contrib/auth/admin.py:32 +msgid "Groups" +msgstr "Các nhóm" + +#: contrib/auth/admin.py:114 +msgid "Password changed successfully." +msgstr "Mật khẩu thay đổi thành công" + +#: contrib/auth/admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "Thay đổi mật khẩu: %s" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "Tên đăng nhập" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +#: contrib/auth/models.py:180 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Nhập nhiều nhất là 30 ký tự. Chỉ sử dụng kiểu ký tự là chữ, con số hoặc dấu " +"gạch dưới." + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Giá trị này chỉ chứa chữ cái, số và dấu gạch dưới" + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "Xác nhận mật khẩu" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "Tên đăng nhập đã được sử dụng" + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "Hai trường mật khẩu không giống nhau" + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "Tài khoản này chưa được kích hoạt." + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "E-mail" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Không tìm thấy địa chỉ email này trong các tài khoản đã có. Bạn có chắc là " +"đã đăng kí không?" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "Xác nhận mật khẩu mới" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Mật khẩu cũ không chính xác. Hãy nhập lại lần nữa" + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "Tên" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "Nhóm" + +#: contrib/auth/models.py:99 contrib/auth/models.py:190 +msgid "groups" +msgstr "Các nhóm" + +#: contrib/auth/models.py:180 +msgid "username" +msgstr "Tên đăng nhập" + +#: contrib/auth/models.py:181 +msgid "first name" +msgstr "Tên" + +#: contrib/auth/models.py:182 +msgid "last name" +msgstr "Họ" + +#: contrib/auth/models.py:183 +msgid "e-mail address" +msgstr "Địa chỉ email" + +#: contrib/auth/models.py:184 +msgid "password" +msgstr "Mật khẩu" + +#: contrib/auth/models.py:184 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/auth/models.py:185 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:185 +msgid "Designates whether the user can log into this admin site." +msgstr "Chỉ định người dùng nào được phép truy cập vào trang admin." + +#: contrib/auth/models.py:186 +msgid "active" +msgstr "Kích hoạt" + +#: contrib/auth/models.py:186 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:187 +msgid "superuser status" +msgstr "" + +#: contrib/auth/models.py:187 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:188 +msgid "last login" +msgstr "Lần cuối đăng nhập" + +#: contrib/auth/models.py:189 +msgid "date joined" +msgstr "Ngày tham gia" + +#: contrib/auth/models.py:191 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Bên cạnh các quyền đã mặc định khi đăng kí, người dùng sẽ được cấp thêm các " +"quyền của các nhóm mà người đó tham gia vào." + +#: contrib/auth/models.py:192 +msgid "user permissions" +msgstr "quyền của người sử dụng" + +#: contrib/auth/models.py:196 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "Người dùng" + +#: contrib/auth/models.py:197 +msgid "users" +msgstr "" + +#: contrib/auth/models.py:367 +msgid "message" +msgstr "Tin nhắn" + +#: contrib/auth/views.py:60 +msgid "Logged out" +msgstr "Đã thoát" + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:85 forms/fields.py:414 +msgid "Enter a valid e-mail address." +msgstr "Hãy nhập địa chỉ email hợp lệ." + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "Nội dung" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "Siêu dữ liệu" + +#: contrib/comments/admin.py:39 +msgid "flagged" +msgstr "" + +#: contrib/comments/admin.py:40 +msgid "Flag selected comments" +msgstr "" + +#: contrib/comments/admin.py:43 +msgid "approved" +msgstr "" + +#: contrib/comments/admin.py:44 +msgid "Approve selected comments" +msgstr "" + +#: contrib/comments/admin.py:47 +msgid "removed" +msgstr "" + +#: contrib/comments/admin.py:48 +msgid "Remove selected comments" +msgstr "" + +#: contrib/comments/admin.py:60 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "Tên" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "Địa chỉ email" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1107 +msgid "URL" +msgstr "Đường dẫn URL" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "Bình luận" + +#: contrib/comments/forms.py:175 +#, 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] "Hãy cẩn thận! Từ %s không đc phép sử dụng ở đây." +msgstr[1] "Hãy cẩn thận! Cụm từ %s không được sử dụng ở đây." + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "Bất kì bình luận nào bạn nhập vào đây cũng sẽ bị coi là thư rác" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "kiểu nội dung" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "Tên người sử dụng" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "Địa chỉ email của người sử dụng" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "Đường dẫn URL của người sử dụng" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "Bình luận" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "Ngày/giờ đã đăng kí" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:909 +msgid "IP address" +msgstr "Địa chỉ IP" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "Không đánh dấu vào hộp này để gỡ bình luận ra khỏi Site" + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "Bị xóa" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Đánh dấu vào hộp này nếu bình luận không thích hợp. Tin nhắn \"Bình luận đã " +"bị xóa\" sẽ thay thế vào đó." + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "kiểu nội dung" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Giá trị này chỉ có thể bao gồm chữ cái, chữ số, dấu gạch dưới, gạch ngang " +"hoặc gạch chéo." + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "Các lựa chọn " + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "tiêu đề" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "nội dung" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "mở bình luận" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "tên mẫu" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "Bạn cần phải cần đăng kí" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Nếu bạn đánh dấu vào đây, chỉ những tài khoản đã đăng nhập mới có thể xem " +"được trang này." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/formtools/wizard.py:134 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Xin lỗi, form mà bạn điền đã hết hiệu lực. Hãy điền vào form lấy từ trang " +"này." + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:269 +msgid "Point" +msgstr "" + +#: contrib/gis/db/models/fields.py:273 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:277 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:281 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:285 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:289 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:293 +msgid "Geometry collection" +msgstr "" + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "" + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "th" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "st" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "nd" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "rd" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "Một" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "Hai" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "Ba" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "Bốn" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "Năm" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "Sáu" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "Bảy" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "Tám" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "Chín" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "Hôm nay" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "Ngày mai" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "Hôm qua" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Hãy nhập mã bưu điện theo mẫu NNNN hoặc ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:97 +#: contrib/localflavor/br/forms.py:136 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "Điền một chữ số duy nhất." + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "Bạn cần điền 7 hoặc 8 chữ số." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Hãy nhập CUIT hợp lệ theo dạng XX-XXXXXXXX-X hoặc XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "CUIT không hợp lệ." + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "Thành phố Viên" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "Hãy nhập mã bưu điện theo dạng XXXX." + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "Hãy nhập số an sinh xã hội của nước Áo theo dạng XXXX XXXXXX." + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "Hãy nhập 4 số của mã bưu điện." + +#: contrib/localflavor/br/forms.py:22 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Hãy nhập mã bưu điện theo dạng XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:31 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Số điện thoại phải dưới dạng XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:59 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" + +#: contrib/localflavor/br/forms.py:95 +msgid "Invalid CPF number." +msgstr "Số CPF không hợp lệ." + +#: contrib/localflavor/br/forms.py:96 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Điền nhiều nhất là 11 chữ số hoặc 14 kí tự." + +#: contrib/localflavor/br/forms.py:135 +msgid "Invalid CNPJ number." +msgstr "Số CNPJ không hợp lệ." + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Bạn phải cần điền ít nhất là 14 chữ số." + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Hãy nhập mã bưu điện theo dạng XXX XXX." + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Thành phố Zurich" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "" + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "" + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Bang Saxony" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Hãy nhập mã bưu điện theo mẫu XXXXX." + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Hãy nhập mã số bưu điện hợp lệ theo dạng 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Hãy nhập số điện thoại hợp lệ theo dạng 6XXXXXXXX, 8XXXXXXXX hoặc 9XXXXXXXX." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Hãy nhập NIF, NIE, hoặc CIF hợp lệ." + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "Hãy nhập NIF hoặc NIE hợp lệ." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Hãy nhập số tài khoản ngân hàng theo dạng XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Hãy nhập số điện thoại có hiệu lực" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Hãy nhập mã bưu điện theo dạng XXXXXXX." + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "Hãy nhập mã bưu điện hợp lệ." + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "Hãy nhập số Bảo hiểm Xã hội hợp lệ." + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "Hãy nhập số VAT hợp lệ." + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Hãy nhập mã bưu điện theo dạng XXXXXXX hoặc XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Thành phố Hirosima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Thành phố Okinawa" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "Hãy nhập mã bưu điện có hiệu lực" + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "Hãy nhập số SoFi hợp lệ" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "Hãy nhập số an sinh xã hội có hiệu lực" + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "Bạn cần điền 8 chữ số." + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "Bạn cần điền 11 chữ số." + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "Số CMTND gồm 11 chữ số" + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Hãy nhập mã số thuế theo mẫu XXX-XXX-XX-XX hoặc XX-XX-XXX-XXX" + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Hãy nhập mã bưu điện theo mẫu XX-XXX" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "" + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "" + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "" + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "Vùng South Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "Nước Anh" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Bắc Ai-len" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "Sccotland" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "Xứ Wale" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Hãy nhập mã bưu điện theo mẫu XXXXX hoặc XXXXX-XXXX" + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Hãy nhập số an sinh xã hội dưới dạng XXX-XX-XXXX" + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "Số điện thoại" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "Hãy nhập mã bưu điện Nam Phi có hiệu lực" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "Tây Bắc" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "Chuyển hướng từ" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Đây phải là đường dẫn tuyệt đối, không bao gồm tên miền. Ví dụ: '/events/" +"search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "Chuyển hướng tới" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Đây có thể là đường dẫn tuyệt đối hoặc địa chỉ đầy đủ bắt đầu với 'http://'" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "Chuyển hướng" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "Chuyển hướng" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "Ngày hết hạn" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "Tên miền" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "Tên hiển thị" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "" + +#: core/validators.py:19 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "Nhập một giá trị hợp lệ." + +#: core/validators.py:69 forms/fields.py:515 +msgid "Enter a valid URL." +msgstr "Nhập một URL hợp lệ." + +#: core/validators.py:71 forms/fields.py:516 +msgid "This URL appears to be a broken link." +msgstr "URL này có vẻ là một liên kết bị đứt gãy." + +#: core/validators.py:88 forms/fields.py:859 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "Nhập một 'slug' hợp lệ gồm chữ cái, số, gạch dưới và gạch nối." + +#: core/validators.py:91 forms/fields.py:852 +msgid "Enter a valid IPv4 address." +msgstr "Nhập một địa chỉ IPv4 hợp lệ." + +#: core/validators.py:94 db/models/fields/__init__.py:591 +msgid "Enter only digits separated by commas." +msgstr "Chỉ nhập chữ số, cách nhau bằng dấu phẩy." + +#: core/validators.py:100 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: core/validators.py:118 forms/fields.py:196 forms/fields.py:248 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:123 forms/fields.py:197 forms/fields.py:249 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:129 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:135 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: db/models/base.py:775 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" + +#: db/models/base.py:790 db/models/base.py:798 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s có %(field_label)s đã tồn tại." + +#: db/models/fields/__init__.py:62 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: db/models/fields/__init__.py:63 +msgid "This field cannot be null." +msgstr "Trường này không thể để trống." + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be blank." +msgstr "" + +#: db/models/fields/__init__.py:69 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: db/models/fields/__init__.py:475 db/models/fields/__init__.py:871 +#: db/models/fields/__init__.py:967 db/models/fields/__init__.py:978 +#: db/models/fields/__init__.py:1005 +msgid "Integer" +msgstr "Số nguyên" + +#: db/models/fields/__init__.py:479 +msgid "This value must be an integer." +msgstr "Giá trị này phải là số nguyên." + +#: db/models/fields/__init__.py:514 +msgid "This value must be either True or False." +msgstr "Giá trị này phải là True hoặc False." + +#: db/models/fields/__init__.py:516 +msgid "Boolean (Either True or False)" +msgstr "Luận lý (hoặc là Đúng hoặc là Sai)" + +#: db/models/fields/__init__.py:558 db/models/fields/__init__.py:988 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: db/models/fields/__init__.py:586 +msgid "Comma-separated integers" +msgstr "Các số nguyên được phân cách bằng dấu phẩy" + +#: db/models/fields/__init__.py:600 +msgid "Date (without time)" +msgstr "Ngày (không có giờ)" + +#: db/models/fields/__init__.py:604 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Nhập một ngày hợp lệ theo dạng YYYY-MM-DD." + +#: db/models/fields/__init__.py:605 +#, python-format +msgid "Invalid date: %s" +msgstr "Ngày không hợp lệ: %s" + +#: db/models/fields/__init__.py:686 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "" +"Nhập một ngày/thời gian hợp lệ theo dạng YYYY-MM-DD HH:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:688 +msgid "Date (with time)" +msgstr "Ngày (có giờ)" + +#: db/models/fields/__init__.py:754 +msgid "This value must be a decimal number." +msgstr "Giá trị này phải là số thập phân." + +#: db/models/fields/__init__.py:756 +msgid "Decimal number" +msgstr "Số thập phân" + +#: db/models/fields/__init__.py:811 +msgid "E-mail address" +msgstr "Địa chỉ email" + +#: db/models/fields/__init__.py:818 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "Đường dẫn tắt tới file" + +#: db/models/fields/__init__.py:841 db/models/fields/__init__.py:869 +msgid "This value must be a float." +msgstr "" + +#: db/models/fields/__init__.py:843 +msgid "Floating point number" +msgstr "Giá trị dấu chấm động" + +#: db/models/fields/__init__.py:896 +msgid "Big (8 byte) integer" +msgstr "" + +#: db/models/fields/__init__.py:925 +msgid "This value must be either None, True or False." +msgstr "Giá trị này phải là None, True hoặc False." + +#: db/models/fields/__init__.py:927 +msgid "Boolean (Either True, False or None)" +msgstr "Luận lý (Có thể Đúng, Sai hoặc Không cái nào đúng)" + +#: db/models/fields/__init__.py:1011 +msgid "Text" +msgstr "Đoạn văn" + +#: db/models/fields/__init__.py:1027 +msgid "Time" +msgstr "Giờ" + +#: db/models/fields/__init__.py:1031 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Nhập một thời gian hợp lệ theo dạng HH:MM[:ss[.uuuuuu]]." + +#: db/models/fields/__init__.py:1115 +msgid "XML text" +msgstr "" + +#: db/models/fields/related.py:755 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "" + +#: db/models/fields/related.py:757 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: db/models/fields/related.py:879 +msgid "One-to-one relationship" +msgstr "" + +#: db/models/fields/related.py:939 +msgid "Many-to-many relationship" +msgstr "" + +#: db/models/fields/related.py:959 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Giữ \"Control\", hoặc \"Command\" trên Mac, để chọn nhiều hơn một." + +#: db/models/fields/related.py:1020 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Hãy nhập một ID %(self)s hợp lệ. Giá trị %(value)r không hợp lệ." +msgstr[1] "Hãy nhập một ID %(self)s hợp lệ. Giá trị %(value)r không hợp lệ." + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "Trường này là bắt buộc." + +#: forms/fields.py:195 +msgid "Enter a whole number." +msgstr "Nhập một số tổng thể." + +#: forms/fields.py:225 forms/fields.py:247 +msgid "Enter a number." +msgstr "Nhập một số." + +#: forms/fields.py:250 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Hãy chắc chắn rằng tổng cộng không nhiều hơn %s chữ số." + +#: forms/fields.py:251 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Hãy chắc chắn rằng không có nhiều hơn %s chữ số thập phân." + +#: forms/fields.py:252 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" +"Hãy chắc chắn rằng không có nhiều hơn %s chữ số trước dấu phẩy thập phân." + +#: forms/fields.py:309 forms/fields.py:824 +msgid "Enter a valid date." +msgstr "Nhập một ngày hợp lệ." + +#: forms/fields.py:337 forms/fields.py:825 +msgid "Enter a valid time." +msgstr "Nhập một thời gian hợp lệ." + +#: forms/fields.py:363 +msgid "Enter a valid date/time." +msgstr "Nhập một ngày/thời gian hợp lệ." + +#: forms/fields.py:421 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Không có tập tin nào được gửi. Hãy kiểm tra kiểu mã hóa của biểu mẫu." + +#: forms/fields.py:422 +msgid "No file was submitted." +msgstr "Không có tập tin nào được gửi." + +#: forms/fields.py:423 +msgid "The submitted file is empty." +msgstr "Tập tin được gửi là rỗng." + +#: forms/fields.py:424 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: forms/fields.py:459 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Hãy tải lên một hình ảnh hợp lệ. Tập tin mà bạn đã tải không phải là hình " +"ảnh hoặc đã bị hư hỏng." + +#: forms/fields.py:582 forms/fields.py:657 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Hãy chọn một lựa chọn hợp lệ. %(value)s không phải là một trong các lựa chọn " +"khả thi." + +#: forms/fields.py:658 forms/fields.py:720 forms/models.py:961 +msgid "Enter a list of values." +msgstr "Nhập một danh sách giá trị." + +#: forms/formsets.py:290 forms/formsets.py:292 +msgid "Order" +msgstr "Thứ tự" + +#: forms/models.py:538 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: forms/models.py:542 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:548 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:556 +msgid "Please correct the duplicate values below." +msgstr "" + +#: forms/models.py:820 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" + +#: forms/models.py:886 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Hãy chọn một lựa chọn hợp lệ. Lựa chọn đó không phải là một trong các lựa " +"chọn khả thi." + +#: forms/models.py:962 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "" +"Hãy chọn một lựa chọn hợp lệ. %s không phải là một trong các lựa chọn khả " +"thi." + +#: forms/models.py:964 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "" + +#: template/defaultfilters.py:775 +msgid "yes,no,maybe" +msgstr "Có, Không, Có thể" + +#: template/defaultfilters.py:806 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:808 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:810 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:811 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "chiều" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "sáng" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "Nửa đêm" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "Buổi trưa" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Thứ 2" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Thứ 3" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Thứ 4" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Thứ 5" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Thứ 6" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Thứ 7" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Chủ nhật" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "Thứ 2" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Thứ 3" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Thứ 4" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "Thứ 5" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Thứ 6" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "Thứ 7" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Chủ nhật" + +#: utils/dates.py:18 +msgid "January" +msgstr "Tháng 1" + +#: utils/dates.py:18 +msgid "February" +msgstr "Tháng 2" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "Tháng 3" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "Tháng 4" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "Tháng 5" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "Tháng 6" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "Tháng 7" + +#: utils/dates.py:19 +msgid "August" +msgstr "Tháng 8" + +#: utils/dates.py:19 +msgid "September" +msgstr "Tháng 9" + +#: utils/dates.py:19 +msgid "October" +msgstr "Tháng 10" + +#: utils/dates.py:19 +msgid "November" +msgstr "Tháng 11" + +#: utils/dates.py:20 +msgid "December" +msgstr "Tháng 12" + +#: utils/dates.py:23 +msgid "jan" +msgstr "Tháng 1" + +#: utils/dates.py:23 +msgid "feb" +msgstr "Tháng 2" + +#: utils/dates.py:23 +msgid "mar" +msgstr "Tháng 3" + +#: utils/dates.py:23 +msgid "apr" +msgstr "Tháng 4" + +#: utils/dates.py:23 +msgid "may" +msgstr "Tháng 5" + +#: utils/dates.py:23 +msgid "jun" +msgstr "Tháng 6" + +#: utils/dates.py:24 +msgid "jul" +msgstr "Tháng 7" + +#: utils/dates.py:24 +msgid "aug" +msgstr "Tháng 8" + +#: utils/dates.py:24 +msgid "sep" +msgstr "Tháng 9" + +#: utils/dates.py:24 +msgid "oct" +msgstr "Tháng 10" + +#: utils/dates.py:24 +msgid "nov" +msgstr "Tháng 11" + +#: utils/dates.py:24 +msgid "dec" +msgstr "Tháng 12" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "Tháng 1" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "Tháng 2" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "Tháng 8" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "Tháng 9" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "Tháng 10" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "Tháng 11" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "Tháng 12" + +#: utils/text.py:130 +msgid "or" +msgstr "hoặc" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "năm" +msgstr[1] "năm" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "tháng" +msgstr[1] "tháng" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "tuần" +msgstr[1] "tuần" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "ngày" +msgstr[1] "ngày" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "phút" +msgstr[1] "phút" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "phút" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: utils/translation/trans_real.py:512 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:513 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:514 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:535 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:536 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s đã được tạo thành công." + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s đã được cập nhật thành công." + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s đã bị xóa." + +#~ msgid "" +#~ "Ensure this value has at most %(max)d characters (it has %(length)d)." +#~ msgstr "" +#~ "Hãy chắc chắn rằng giá trị này có nhiều nhất %(max)d kí tự (nó có %" +#~ "(length)d)." + +#~ msgid "" +#~ "Ensure this value has at least %(min)d characters (it has %(length)d)." +#~ msgstr "" +#~ "Hãy chắc chắn rằng giá trị này có ít nhất %(min)d kí tự (nó có %(length)" +#~ "d)." + +#~ msgid "Ensure this value is less than or equal to %s." +#~ msgstr "Hãy chắc chắn rằng giá trị này nhỏ hơn hoặc bằng %s." + +#~ msgid "Ensure this value is greater than or equal to %s." +#~ msgstr "Hãy chắc chắn rằng giá trị này lớn hơn hoặc bằng %s." + +#~ msgid "Portugese" +#~ msgstr "Tiếng Bồ Đào Nha" + +#~ msgid "Old password:" +#~ msgstr "Mật khẩu cũ" + +#~ msgid "Add user" +#~ msgstr "Thêm người sử dụng khác" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/vi/LC_MESSAGES/djangojs.mo Binary file web/lib/django/conf/locale/vi/LC_MESSAGES/djangojs.mo has changed diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/vi/LC_MESSAGES/djangojs.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/vi/LC_MESSAGES/djangojs.po Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,115 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-02-21 13:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:37 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:45 +msgid "Choose all" +msgstr "Chọn tất cả" + +#: contrib/admin/media/js/SelectFilter2.js:50 +msgid "Add" +msgstr "Thêm" + +#: contrib/admin/media/js/SelectFilter2.js:52 +msgid "Remove" +msgstr "Xóa" + +#: contrib/admin/media/js/SelectFilter2.js:57 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:58 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:63 +msgid "Clear all" +msgstr "Xóa tất cả" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "Hiện ra" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "Dấu đi" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:50 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Now" +msgstr "Bây giờ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:54 +msgid "Clock" +msgstr "Đồng hồ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Choose a time" +msgstr "Chọn giờ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 +msgid "Midnight" +msgstr "Nửa đêm" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +msgid "6 a.m." +msgstr "6 giờ sáng" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +msgid "Noon" +msgstr "Buổi trưa" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:92 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 +msgid "Cancel" +msgstr "Hủy bỏ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 +msgid "Today" +msgstr "Hôm nay" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 +msgid "Calendar" +msgstr "Lịch" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Yesterday" +msgstr "Hôm qua" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Tomorrow" +msgstr "Ngày mai" diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/vi/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/vi/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/vi/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = r'\N\gà\y d \t\há\n\g n \nă\m Y' +TIME_FORMAT = 'H:i:s' +DATETIME_FORMAT = r'H:i:s \N\gà\y d \t\há\n\g n \nă\m Y' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'd-m-Y' +SHORT_DATETIME_FORMAT = 'H:i:s d-m-Y' +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = '.' +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/zh_CN/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/zh_CN/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/zh_CN/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +# DATE_FORMAT = +# TIME_FORMAT = +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +# SHORT_DATE_FORMAT = +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/zh_TW/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/locale/zh_TW/formats.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/conf/locale/zh_TW/formats.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +# DATE_FORMAT = +# TIME_FORMAT = +# DATETIME_FORMAT = +# YEAR_MONTH_FORMAT = +# MONTH_DAY_FORMAT = +# SHORT_DATE_FORMAT = +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +# DECIMAL_SEPARATOR = +# THOUSAND_SEPARATOR = +# NUMBER_GROUPING = diff -r b758351d191f -r cc9b7e14412b web/lib/django/conf/project_template/settings.py --- a/web/lib/django/conf/project_template/settings.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/conf/project_template/settings.py Tue May 25 02:43:45 2010 +0200 @@ -9,16 +9,22 @@ MANAGERS = ADMINS -DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. -DATABASE_NAME = '' # Or path to database file if using sqlite3. -DATABASE_USER = '' # Not used with sqlite3. -DATABASE_PASSWORD = '' # Not used with sqlite3. -DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. -DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': '', # Or path to database file if using sqlite3. + 'USER': '', # Not used with sqlite3. + 'PASSWORD': '', # Not used with sqlite3. + 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. + 'PORT': '', # Set to empty string for default. Not used with sqlite3. + } +} # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. +# On Unix systems, a value of None will cause Django to use the same +# timezone as the operating system. # If running in a Windows environment this must be set to the same as your # system time zone. TIME_ZONE = 'America/Chicago' @@ -33,6 +39,10 @@ # to load the internationalization machinery. USE_I18N = True +# If you set this to False, Django will not format dates, numbers and +# calendars according to the current locale +USE_L10N = True + # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = '' @@ -52,15 +62,17 @@ # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.load_template_source', - 'django.template.loaders.app_directories.load_template_source', -# 'django.template.loaders.eggs.load_template_source', + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', +# 'django.template.loaders.eggs.Loader', ) MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', ) ROOT_URLCONF = '{{ project_name }}.urls' @@ -76,4 +88,7 @@ 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', + 'django.contrib.messages', + # Uncomment the next line to enable the admin: + # 'django.contrib.admin', ) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/__init__.py --- a/web/lib/django/contrib/admin/__init__.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -2,11 +2,7 @@ from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL from django.contrib.admin.options import StackedInline, TabularInline from django.contrib.admin.sites import AdminSite, site -from django.utils.importlib import import_module -# A flag to tell us if autodiscover is running. autodiscover will set this to -# True while running, and False when it finishes. -LOADING = False def autodiscover(): """ @@ -14,45 +10,27 @@ not present. This forces an import on them to register any admin bits they may want. """ - # Bail out if autodiscover didn't finish loading from a previous call so - # that we avoid running autodiscover again when the URLconf is loaded by - # the exception handler to resolve the handler500 view. This prevents an - # admin.py module with errors from re-registering models and raising a - # spurious AlreadyRegistered exception (see #8245). - global LOADING - if LOADING: - return - LOADING = True - import imp + import copy from django.conf import settings + from django.utils.importlib import import_module + from django.utils.module_loading import module_has_submodule for app in settings.INSTALLED_APPS: - # For each app, we need to look for an admin.py inside that app's - # package. We can't use os.path here -- recall that modules may be - # imported different ways (think zip files) -- so we need to get - # the app's __path__ and look for admin.py on that path. - - # Step 1: find out the app's __path__ Import errors here will (and - # should) bubble up, but a missing __path__ (which is legal, but weird) - # fails silently -- apps that do weird things with __path__ might - # need to roll their own admin registration. + mod = import_module(app) + # Attempt to import the app's admin module. try: - app_path = import_module(app).__path__ - except AttributeError: - continue + before_import_registry = copy.copy(site._registry) + import_module('%s.admin' % app) + except: + # Reset the model registry to the state before the last import as + # this import will have to reoccur on the next request and this + # could raise NotRegistered and AlreadyRegistered exceptions + # (see #8245). + site._registry = before_import_registry - # Step 2: use imp.find_module to find the app's admin.py. For some - # reason imp.find_module raises ImportError if the app can't be found - # but doesn't actually try to import the module. So skip this app if - # its admin.py doesn't exist - try: - imp.find_module('admin', app_path) - except ImportError: - continue - - # Step 3: import the app's admin file. If this has errors we want them - # to bubble up. - import_module("%s.admin" % app) - # autodiscover was successful, reset loading flag. - LOADING = False + # Decide whether to bubble up this error. If the app just + # doesn't have an admin module, we can ignore the error + # attempting to import it, otherwise we want it to bubble up. + if module_has_submodule(mod, 'admin'): + raise diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/actions.py --- a/web/lib/django/contrib/admin/actions.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/actions.py Tue May 25 02:43:45 2010 +0200 @@ -12,10 +12,6 @@ from django.utils.safestring import mark_safe from django.utils.text import capfirst from django.utils.translation import ugettext_lazy, ugettext as _ -try: - set -except NameError: - from sets import Set as set # Python 2.3 fallback def delete_selected(modeladmin, request, queryset): """ @@ -36,15 +32,7 @@ # Populate deletable_objects, a data structure of all related objects that # will also be deleted. - - # deletable_objects must be a list if we want to use '|unordered_list' in the template - deletable_objects = [] - perms_needed = set() - i = 0 - for obj in queryset: - deletable_objects.append([mark_safe(u'%s: %s' % (escape(force_unicode(capfirst(opts.verbose_name))), obj.pk, escape(obj))), []]) - get_deleted_objects(deletable_objects[i], perms_needed, request.user, obj, opts, 1, modeladmin.admin_site, levels_to_root=2) - i=i+1 + deletable_objects, perms_needed = get_deleted_objects(queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2) # The user has already confirmed the deletion. # Do the deletion and return a None to display the change list view again. @@ -66,7 +54,7 @@ context = { "title": _("Are you sure?"), "object_name": force_unicode(opts.verbose_name), - "deletable_objects": deletable_objects, + "deletable_objects": [deletable_objects], 'queryset': queryset, "perms_lacking": perms_needed, "opts": opts, @@ -76,7 +64,7 @@ } # Display the confirmation page - return render_to_response(modeladmin.delete_confirmation_template or [ + return render_to_response(modeladmin.delete_selected_confirmation_template or [ "admin/%s/%s/delete_selected_confirmation.html" % (app_label, opts.object_name.lower()), "admin/%s/delete_selected_confirmation.html" % app_label, "admin/delete_selected_confirmation.html" diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/helpers.py --- a/web/lib/django/contrib/admin/helpers.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/helpers.py Tue May 25 02:43:45 2010 +0200 @@ -1,31 +1,47 @@ - from django import forms from django.conf import settings -from django.utils.html import escape +from django.contrib.admin.util import flatten_fieldsets, lookup_field +from django.contrib.admin.util import display_for_field, label_for_field +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist +from django.db.models.fields import FieldDoesNotExist +from django.db.models.fields.related import ManyToManyRel +from django.forms.util import flatatt +from django.template.defaultfilters import capfirst +from django.utils.encoding import force_unicode, smart_unicode +from django.utils.html import escape, conditional_escape from django.utils.safestring import mark_safe -from django.utils.encoding import force_unicode -from django.contrib.admin.util import flatten_fieldsets -from django.contrib.contenttypes.models import ContentType from django.utils.translation import ugettext_lazy as _ + ACTION_CHECKBOX_NAME = '_selected_action' class ActionForm(forms.Form): action = forms.ChoiceField(label=_('Action:')) + select_across = forms.BooleanField(label='', required=False, initial=0, + widget=forms.HiddenInput({'class': 'select-across'})) checkbox = forms.CheckboxInput({'class': 'action-select'}, lambda value: False) class AdminForm(object): - def __init__(self, form, fieldsets, prepopulated_fields): + def __init__(self, form, fieldsets, prepopulated_fields, readonly_fields=None, model_admin=None): self.form, self.fieldsets = form, normalize_fieldsets(fieldsets) self.prepopulated_fields = [{ 'field': form[field_name], 'dependencies': [form[f] for f in dependencies] } for field_name, dependencies in prepopulated_fields.items()] + self.model_admin = model_admin + if readonly_fields is None: + readonly_fields = () + self.readonly_fields = readonly_fields def __iter__(self): for name, options in self.fieldsets: - yield Fieldset(self.form, name, **options) + yield Fieldset(self.form, name, + readonly_fields=self.readonly_fields, + model_admin=self.model_admin, + **options + ) def first_field(self): try: @@ -49,36 +65,48 @@ media = property(_media) class Fieldset(object): - def __init__(self, form, name=None, fields=(), classes=(), description=None): + def __init__(self, form, name=None, readonly_fields=(), fields=(), classes=(), + description=None, model_admin=None): self.form = form self.name, self.fields = name, fields self.classes = u' '.join(classes) self.description = description + self.model_admin = model_admin + self.readonly_fields = readonly_fields def _media(self): if 'collapse' in self.classes: - return forms.Media(js=['%sjs/admin/CollapsedFieldsets.js' % settings.ADMIN_MEDIA_PREFIX]) + js = ['js/jquery.min.js', 'js/jquery.init.js', 'js/collapse.min.js'] + return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js]) return forms.Media() media = property(_media) def __iter__(self): for field in self.fields: - yield Fieldline(self.form, field) + yield Fieldline(self.form, field, self.readonly_fields, model_admin=self.model_admin) class Fieldline(object): - def __init__(self, form, field): + def __init__(self, form, field, readonly_fields=None, model_admin=None): self.form = form # A django.forms.Form instance - if isinstance(field, basestring): + if not hasattr(field, "__iter__"): self.fields = [field] else: self.fields = field + self.model_admin = model_admin + if readonly_fields is None: + readonly_fields = () + self.readonly_fields = readonly_fields def __iter__(self): for i, field in enumerate(self.fields): - yield AdminField(self.form, field, is_first=(i == 0)) + if field in self.readonly_fields: + yield AdminReadonlyField(self.form, field, is_first=(i == 0), + model_admin=self.model_admin) + else: + yield AdminField(self.form, field, is_first=(i == 0)) def errors(self): - return mark_safe(u'\n'.join([self.form[f].errors.as_ul() for f in self.fields]).strip('\n')) + return mark_safe(u'\n'.join([self.form[f].errors.as_ul() for f in self.fields if f not in self.readonly_fields]).strip('\n')) class AdminField(object): def __init__(self, form, field, is_first): @@ -100,27 +128,105 @@ attrs = classes and {'class': u' '.join(classes)} or {} return self.field.label_tag(contents=contents, attrs=attrs) +class AdminReadonlyField(object): + def __init__(self, form, field, is_first, model_admin=None): + label = label_for_field(field, form._meta.model, model_admin) + # Make self.field look a little bit like a field. This means that + # {{ field.name }} must be a useful class name to identify the field. + # For convenience, store other field-related data here too. + if callable(field): + class_name = field.__name__ != '' and field.__name__ or '' + else: + class_name = field + self.field = { + 'name': class_name, + 'label': label, + 'field': field, + } + self.form = form + self.model_admin = model_admin + self.is_first = is_first + self.is_checkbox = False + self.is_readonly = True + + def label_tag(self): + attrs = {} + if not self.is_first: + attrs["class"] = "inline" + label = self.field['label'] + contents = capfirst(force_unicode(escape(label))) + u":" + return mark_safe('%(contents)s' % { + "attrs": flatatt(attrs), + "contents": contents, + }) + + def contents(self): + from django.contrib.admin.templatetags.admin_list import _boolean_icon + from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE + field, obj, model_admin = self.field['field'], self.form.instance, self.model_admin + try: + f, attr, value = lookup_field(field, obj, model_admin) + except (AttributeError, ValueError, ObjectDoesNotExist): + result_repr = EMPTY_CHANGELIST_VALUE + else: + if f is None: + boolean = getattr(attr, "boolean", False) + if boolean: + result_repr = _boolean_icon(value) + else: + result_repr = smart_unicode(value) + if getattr(attr, "allow_tags", False): + result_repr = mark_safe(result_repr) + else: + if value is None: + result_repr = EMPTY_CHANGELIST_VALUE + elif isinstance(f.rel, ManyToManyRel): + result_repr = ", ".join(map(unicode, value.all())) + else: + result_repr = display_for_field(value, f) + return conditional_escape(result_repr) + class InlineAdminFormSet(object): """ A wrapper around an inline formset for use in the admin system. """ - def __init__(self, inline, formset, fieldsets): + def __init__(self, inline, formset, fieldsets, readonly_fields=None, model_admin=None): self.opts = inline self.formset = formset self.fieldsets = fieldsets + self.model_admin = model_admin + if readonly_fields is None: + readonly_fields = () + self.readonly_fields = readonly_fields def __iter__(self): for form, original in zip(self.formset.initial_forms, self.formset.get_queryset()): - yield InlineAdminForm(self.formset, form, self.fieldsets, self.opts.prepopulated_fields, original) + yield InlineAdminForm(self.formset, form, self.fieldsets, + self.opts.prepopulated_fields, original, self.readonly_fields, + model_admin=self.model_admin) for form in self.formset.extra_forms: - yield InlineAdminForm(self.formset, form, self.fieldsets, self.opts.prepopulated_fields, None) + yield InlineAdminForm(self.formset, form, self.fieldsets, + self.opts.prepopulated_fields, None, self.readonly_fields, + model_admin=self.model_admin) + yield InlineAdminForm(self.formset, self.formset.empty_form, + self.fieldsets, self.opts.prepopulated_fields, None, + self.readonly_fields, model_admin=self.model_admin) def fields(self): fk = getattr(self.formset, "fk", None) - for field_name in flatten_fieldsets(self.fieldsets): - if fk and fk.name == field_name: + for i, field in enumerate(flatten_fieldsets(self.fieldsets)): + if fk and fk.name == field: continue - yield self.formset.form.base_fields[field_name] + if field in self.readonly_fields: + yield { + 'label': label_for_field(field, self.opts.model, self.model_admin), + 'widget': { + 'is_hidden': False + }, + 'required': False + } + else: + yield self.formset.form.base_fields[field] def _media(self): media = self.opts.media + self.formset.media @@ -133,17 +239,21 @@ """ A wrapper around an inline form for use in the admin system. """ - def __init__(self, formset, form, fieldsets, prepopulated_fields, original): + def __init__(self, formset, form, fieldsets, prepopulated_fields, original, + readonly_fields=None, model_admin=None): self.formset = formset + self.model_admin = model_admin self.original = original if original is not None: self.original_content_type_id = ContentType.objects.get_for_model(original).pk self.show_url = original and hasattr(original, 'get_absolute_url') - super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields) + super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields, + readonly_fields, model_admin) def __iter__(self): for name, options in self.fieldsets: - yield InlineFieldset(self.formset, self.form, name, **options) + yield InlineFieldset(self.formset, self.form, name, + self.readonly_fields, model_admin=self.model_admin, **options) def has_auto_field(self): if self.form._meta.model._meta.has_auto_field: @@ -194,7 +304,8 @@ for field in self.fields: if fk and fk.name == field: continue - yield Fieldline(self.form, field) + yield Fieldline(self.form, field, self.readonly_fields, + model_admin=self.model_admin) class AdminErrorList(forms.util.ErrorList): """ @@ -228,4 +339,3 @@ del data_dict[key] data_dict[str(key)] = value return data_dict - diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/css/base.css --- a/web/lib/django/contrib/admin/media/css/base.css Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/css/base.css Tue May 25 02:43:45 2010 +0200 @@ -344,7 +344,7 @@ /* FORM DEFAULTS */ -input, textarea, select { +input, textarea, select, .form-row p { margin: 2px 0; padding: 2px 3px; vertical-align: middle; @@ -365,7 +365,7 @@ .button, input[type=submit], input[type=button], .submit-row input { background: white url(../img/admin/nav-bg.gif) bottom repeat-x; - padding: 3px; + padding: 3px 5px; color: black; border: 1px solid #bbb; border-color: #ddd #aaa #aaa #ddd; diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/css/changelists.css --- a/web/lib/django/contrib/admin/media/css/changelists.css Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/css/changelists.css Tue May 25 02:43:45 2010 +0200 @@ -53,7 +53,7 @@ vertical-align: middle; } -#changelist table thead th:first-child { +#changelist table thead th.action-checkbox-column { width: 1.5em; text-align: center; } @@ -244,6 +244,21 @@ background: white url(../img/admin/nav-bg-reverse.gif) 0 -10px repeat-x; } +#changelist .actions.selected { + background: #fffccf; + border-top: 1px solid #fffee8; + border-bottom: 1px solid #edecd6; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 11px; + margin: 0 0.5em; + display: none; +} + #changelist .actions:last-child { border-bottom: none; } diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/css/forms.css --- a/web/lib/django/contrib/admin/media/css/forms.css Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/css/forms.css Tue May 25 02:43:45 2010 +0200 @@ -67,6 +67,12 @@ width: 8em; } +.aligned ul label { + display: inline; + float: none; + width: auto; +} + .colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { width: 350px; } @@ -140,7 +146,6 @@ } fieldset.collapsed .collapse-toggle { - padding: 3px 5px !important; background: transparent; display: inline !important; } @@ -247,10 +252,7 @@ } .inline-related h3 span.delete { - padding-left: 20px; - position: absolute; - top: 2px; - right: 10px; + float: right; } .inline-related h3 span.delete label { @@ -274,6 +276,11 @@ color: #fff; } +.inline-group .tabular fieldset.module { + border: none; + border-bottom: 1px solid #ddd; +} + .inline-related.tabular fieldset.module table { width: 100%; } @@ -320,8 +327,28 @@ padding: 0 5px; } -.inline-group ul.tools a.add { +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: #666; + padding: 3px 5px; + border-bottom: 1px solid #ddd; + background: #e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; +} + +.inline-group .tabular tr.add-row td { + padding: 4px 5px 3px; + border-bottom: none; +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { background: url(../img/admin/icon_addlink.gif) 0 50% no-repeat; padding-left: 14px; + font-size: 11px; + outline: 0; /* Remove dotted border around link */ } +.empty-form { + display: none; +} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/css/ie.css --- a/web/lib/django/contrib/admin/media/css/ie.css Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/css/ie.css Tue May 25 02:43:45 2010 +0200 @@ -48,4 +48,10 @@ .change-list .filtered { _height: 400px; +} + +/* IE doesn't know alpha transparency in PNGs */ + +.inline-deletelink { + background: transparent url(../img/admin/inline-delete-8bit.png) no-repeat; } \ No newline at end of file diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/css/rtl.css --- a/web/lib/django/contrib/admin/media/css/rtl.css Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/css/rtl.css Tue May 25 02:43:45 2010 +0200 @@ -112,6 +112,13 @@ margin-right: -10px; } +.filtered .actions { + border-left:1px solid #DDDDDD; + margin-left:160px !important; + border-right: 0 none; + margin-right:0 !important; +} + /* FORMS */ .aligned label { @@ -187,6 +194,10 @@ text-align: right; } +.inline-deletelink { + float: left; +} + /* MISC */ .inline-related h2 { diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/css/widgets.css --- a/web/lib/django/contrib/admin/media/css/widgets.css Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/css/widgets.css Tue May 25 02:43:45 2010 +0200 @@ -416,13 +416,13 @@ /* EDIT INLINE */ .inline-deletelink { - display: block; + float: right; text-indent: -9999px; background: transparent url(../img/admin/inline-delete.png) no-repeat; width: 15px; height: 15px; - margin: 0.4em 0; border: 0px none; + outline: 0; /* Remove dotted border around link */ } .inline-deletelink:hover { diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/js/LICENSE-JQUERY.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/admin/media/js/LICENSE-JQUERY.txt Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,20 @@ +Copyright (c) 2010 John Resig, http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/js/SelectFilter2.js --- a/web/lib/django/contrib/admin/media/js/SelectFilter2.js Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/js/SelectFilter2.js Tue May 25 02:43:45 2010 +0200 @@ -16,6 +16,10 @@ var SelectFilter = { init: function(field_id, field_name, is_stacked, admin_media_prefix) { + if (field_id.match(/__prefix__/)){ + // Don't intialize on empty forms. + return; + } var from_box = document.getElementById(field_id); from_box.id += '_from'; // change its ID from_box.className = 'filtered'; diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/js/actions.js --- a/web/lib/django/contrib/admin/media/js/actions.js Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/media/js/actions.js Tue May 25 02:43:45 2010 +0200 @@ -1,39 +1,139 @@ -var Actions = { - init: function() { - var selectAll = document.getElementById('action-toggle'); - if (selectAll) { - selectAll.style.display = 'inline'; - addEvent(selectAll, 'click', function() { - Actions.checker(selectAll.checked); - }); - } - var changelistTable = document.getElementsBySelector('#changelist table')[0]; - if (changelistTable) { - addEvent(changelistTable, 'click', function(e) { - if (!e) { var e = window.event; } - var target = e.target ? e.target : e.srcElement; - if (target.nodeType == 3) { target = target.parentNode; } - if (target.className == 'action-select') { - var tr = target.parentNode.parentNode; - Actions.toggleRow(tr, target.checked); - } - }); - } - }, - toggleRow: function(tr, checked) { - if (checked && tr.className.indexOf('selected') == -1) { - tr.className += ' selected'; - } else if (!checked) { - tr.className = tr.className.replace(' selected', ''); - } - }, - checker: function(checked) { - var actionCheckboxes = document.getElementsBySelector('tr input.action-select'); - for(var i = 0; i < actionCheckboxes.length; i++) { - actionCheckboxes[i].checked = checked; - Actions.toggleRow(actionCheckboxes[i].parentNode.parentNode, checked); - } - } -}; - -addEvent(window, 'load', Actions.init); +(function($) { + $.fn.actions = function(opts) { + var options = $.extend({}, $.fn.actions.defaults, opts); + var actionCheckboxes = $(this); + var list_editable_changed = false; + checker = function(checked) { + if (checked) { + showQuestion(); + } else { + reset(); + } + $(actionCheckboxes).attr("checked", checked) + .parent().parent().toggleClass(options.selectedClass, checked); + } + updateCounter = function() { + var sel = $(actionCheckboxes).filter(":checked").length; + $(options.counterContainer).html(interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: _actions_icnt + }, true)); + $(options.allToggle).attr("checked", function() { + if (sel == actionCheckboxes.length) { + value = true; + showQuestion(); + } else { + value = false; + clearAcross(); + } + return value; + }); + } + showQuestion = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).show(); + $(options.allContainer).hide(); + } + showClear = function() { + $(options.acrossClears).show(); + $(options.acrossQuestions).hide(); + $(options.actionContainer).toggleClass(options.selectedClass); + $(options.allContainer).show(); + $(options.counterContainer).hide(); + } + reset = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).hide(); + $(options.allContainer).hide(); + $(options.counterContainer).show(); + } + clearAcross = function() { + reset(); + $(options.acrossInput).val(0); + $(options.actionContainer).removeClass(options.selectedClass); + } + // Show counter by default + $(options.counterContainer).show(); + // Check state of checkboxes and reinit state if needed + $(this).filter(":checked").each(function(i) { + $(this).parent().parent().toggleClass(options.selectedClass); + updateCounter(); + if ($(options.acrossInput).val() == 1) { + showClear(); + } + }); + $(options.allToggle).show().click(function() { + checker($(this).attr("checked")); + updateCounter(); + }); + $("div.actions span.question a").click(function(event) { + event.preventDefault(); + $(options.acrossInput).val(1); + showClear(); + }); + $("div.actions span.clear a").click(function(event) { + event.preventDefault(); + $(options.allToggle).attr("checked", false); + clearAcross(); + checker(0); + updateCounter(); + }); + lastChecked = null; + $(actionCheckboxes).click(function(event) { + if (!event) { var event = window.event; } + var target = event.target ? event.target : event.srcElement; + if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey == true) { + var inrange = false; + $(lastChecked).attr("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + $(actionCheckboxes).each(function() { + if ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) { + inrange = (inrange) ? false : true; + } + if (inrange) { + $(this).attr("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + } + }); + } + $(target).parent().parent().toggleClass(options.selectedClass, target.checked); + lastChecked = target; + updateCounter(); + }); + $('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() { + list_editable_changed = true; + }); + $('form#changelist-form button[name="index"]').click(function(event) { + if (list_editable_changed) { + return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); + } + }); + $('form#changelist-form input[name="_save"]').click(function(event) { + var action_changed = false; + $('div.actions select option:selected').each(function() { + if ($(this).val()) { + action_changed = true; + } + }); + if (action_changed) { + if (list_editable_changed) { + return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")); + } else { + return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.")); + } + } + }); + } + /* Setup plugin defaults */ + $.fn.actions.defaults = { + actionContainer: "div.actions", + counterContainer: "span.action-counter", + allContainer: "div.actions span.all", + acrossInput: "div.actions input.select-across", + acrossQuestions: "div.actions span.question", + acrossClears: "div.actions span.clear", + allToggle: "#action-toggle", + selectedClass: "selected" + } +})(django.jQuery); diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/js/actions.min.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/admin/media/js/actions.min.js Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,7 @@ +(function(a){a.fn.actions=function(h){var b=a.extend({},a.fn.actions.defaults,h),e=a(this),f=false;checker=function(c){c?showQuestion():reset();a(e).attr("checked",c).parent().parent().toggleClass(b.selectedClass,c)};updateCounter=function(){var c=a(e).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},true));a(b.allToggle).attr("checked",function(){if(c==e.length){value=true;showQuestion()}else{value= +false;clearAcross()}return value})};showQuestion=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()};showClear=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()};reset=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()};clearAcross=function(){reset();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)}; +a(b.counterContainer).show();a(this).filter(":checked").each(function(){a(this).parent().parent().toggleClass(b.selectedClass);updateCounter();a(b.acrossInput).val()==1&&showClear()});a(b.allToggle).show().click(function(){checker(a(this).attr("checked"));updateCounter()});a("div.actions span.question a").click(function(c){c.preventDefault();a(b.acrossInput).val(1);showClear()});a("div.actions span.clear a").click(function(c){c.preventDefault();a(b.allToggle).attr("checked",false);clearAcross();checker(0); +updateCounter()});lastChecked=null;a(e).click(function(c){if(!c)c=window.event;var d=c.target?c.target:c.srcElement;if(lastChecked&&a.data(lastChecked)!=a.data(d)&&c.shiftKey==true){var g=false;a(lastChecked).attr("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(e).each(function(){if(a.data(this)==a.data(lastChecked)||a.data(this)==a.data(d))g=g?false:true;g&&a(this).attr("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass, +d.checked);lastChecked=d;updateCounter()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){f=true});a('form#changelist-form button[name="index"]').click(function(){if(f)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});a('form#changelist-form input[name="_save"]').click(function(){var c=false;a("div.actions select option:selected").each(function(){if(a(this).val())c= +true});if(c)return f?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across", +acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery); diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/media/js/admin/CollapsedFieldsets.js --- a/web/lib/django/contrib/admin/media/js/admin/CollapsedFieldsets.js Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -// Finds all fieldsets with class="collapse", collapses them, and gives each -// one a "Show" link that uncollapses it. The "Show" link becomes a "Hide" -// link when the fieldset is visible. - -function findForm(node) { - // returns the node of the form containing the given node - if (node.tagName.toLowerCase() != 'form') { - return findForm(node.parentNode); - } - return node; -} - -var CollapsedFieldsets = { - collapse_re: /\bcollapse\b/, // Class of fieldsets that should be dealt with. - collapsed_re: /\bcollapsed\b/, // Class that fieldsets get when they're hidden. - collapsed_class: 'collapsed', - init: function() { - var fieldsets = document.getElementsByTagName('fieldset'); - var collapsed_seen = false; - for (var i = 0, fs; fs = fieldsets[i]; i++) { - // Collapse this fieldset if it has the correct class, and if it - // doesn't have any errors. (Collapsing shouldn't apply in the case - // of error messages.) - if (fs.className.match(CollapsedFieldsets.collapse_re) && !CollapsedFieldsets.fieldset_has_errors(fs)) { - collapsed_seen = true; - // Give it an additional class, used by CSS to hide it. - fs.className += ' ' + CollapsedFieldsets.collapsed_class; - // (Show) - var collapse_link = document.createElement('a'); - collapse_link.className = 'collapse-toggle'; - collapse_link.id = 'fieldsetcollapser' + i; - collapse_link.onclick = new Function('CollapsedFieldsets.show('+i+'); return false;'); - collapse_link.href = '#'; - collapse_link.innerHTML = gettext('Show'); - var h2 = fs.getElementsByTagName('h2')[0]; - h2.appendChild(document.createTextNode(' (')); - h2.appendChild(collapse_link); - h2.appendChild(document.createTextNode(')')); - } - } - if (collapsed_seen) { - // Expand all collapsed fieldsets when form is submitted. - addEvent(findForm(document.getElementsByTagName('fieldset')[0]), 'submit', function() { CollapsedFieldsets.uncollapse_all(); }); - } - }, - fieldset_has_errors: function(fs) { - // Returns true if any fields in the fieldset have validation errors. - var divs = fs.getElementsByTagName('div'); - for (var i=0; i that gets toggled clockLinkName: 'clocklink', // name of the link that is used to toggle + shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts admin_media_prefix: '', init: function() { - // Deduce admin_media_prefix by looking at the + {{ selection_note }} + {% if cl.result_count != cl.result_list|length %} + {{ selection_note_all }} + + {% blocktrans with cl.result_count as total_count %}Select all {{ total_count }} {{ module_name }}{% endblocktrans %} + + {% trans "Clear selection" %} + {% endif %} + {% endif %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/templates/admin/auth/user/add_form.html --- a/web/lib/django/contrib/admin/templates/admin/auth/user/add_form.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/templates/admin/auth/user/add_form.html Tue May 25 02:43:45 2010 +0200 @@ -1,33 +1,11 @@ {% extends "admin/change_form.html" %} {% load i18n %} -{% block after_field_sets %} - -

                                              {% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}

                                              - -
                                              - -
                                              - {{ form.username.errors }} - {# TODO: get required class on label_tag #} - {{ form.username }} -

                                              {{ form.username.help_text }}

                                              -
                                              +{% block form_top %} +

                                              {% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}

                                              + +{% endblock %} -
                                              - {{ form.password1.errors }} - {# TODO: get required class on label_tag #} - {{ form.password1 }} -
                                              - -
                                              - {{ form.password2.errors }} - {# TODO: get required class on label_tag #} - {{ form.password2 }} -

                                              {% trans 'Enter the same password as above, for verification.' %}

                                              -
                                              - +{% block after_field_sets %} - -
                                              {% endblock %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/templates/admin/auth/user/change_password.html --- a/web/lib/django/contrib/admin/templates/admin/auth/user/change_password.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/templates/admin/auth/user/change_password.html Tue May 25 02:43:45 2010 +0200 @@ -1,7 +1,8 @@ {% extends "admin/base_site.html" %} {% load i18n admin_modify adminmedia %} {% block extrahead %}{{ block.super }} - +{% url admin:jsi18n as jsi18nurl %} + {% endblock %} {% block extrastyle %}{{ block.super }}{% endblock %} {% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %} @@ -15,7 +16,7 @@ {% endif %}{% endblock %} {% block content %}
                                              -
                                              {% block form_top %}{% endblock %} +{% csrf_token %}{% block form_top %}{% endblock %}
                                              {% if is_popup %}{% endif %} {% if form.errors %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/templates/admin/base.html --- a/web/lib/django/contrib/admin/templates/admin/base.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/templates/admin/base.html Tue May 25 02:43:45 2010 +0200 @@ -6,6 +6,7 @@ {% block extrastyle %}{% endblock %} {% if LANGUAGE_BIDI %}{% endif %} + {% block extrahead %}{% endblock %} {% block blockbots %}{% endblock %} @@ -22,10 +23,10 @@
                                              {% block branding %}{% endblock %}
                                              - {% if user.is_authenticated and user.is_staff %} + {% if user.is_active and user.is_staff %}
                                              {% trans 'Welcome,' %} - {% firstof user.first_name user.username %}. + {% filter force_escape %}{% firstof user.first_name user.username %}{% endfilter %}. {% block userlinks %} {% url django-admindocs-docroot as docsroot %} {% if docsroot %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/templates/admin/change_form.html --- a/web/lib/django/contrib/admin/templates/admin/change_form.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/templates/admin/change_form.html Tue May 25 02:43:45 2010 +0200 @@ -2,7 +2,8 @@ {% load i18n admin_modify adminmedia %} {% block extrahead %}{{ block.super }} - +{% url admin:jsi18n as jsi18nurl %} + {{ media }} {% endblock %} @@ -29,7 +30,7 @@
                                            {% endif %}{% endif %} {% endblock %} -{% block form_top %}{% endblock %} +{% csrf_token %}{% block form_top %}{% endblock %}
                                            {% if is_popup %}{% endif %} {% if save_on_top %}{% submit_row %}{% endif %} @@ -37,7 +38,7 @@

                                            {% blocktrans count errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}

                                            -
                                              {% for error in adminform.form.non_field_errors %}
                                            • {{ error }}
                                            • {% endfor %}
                                            + {{ adminform.form.non_field_errors }} {% endif %} {% for fieldset in adminform %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/admin/templates/admin/change_list.html --- a/web/lib/django/contrib/admin/templates/admin/change_list.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/admin/templates/admin/change_list.html Tue May 25 02:43:45 2010 +0200 @@ -6,9 +6,12 @@ {% if cl.formset %} - {% endif %} - {{ media }} + {% if cl.formset or action_form %} + {% url admin:jsi18n as jsi18nurl %} + + {% endif %} + {{ media.css }} {% if not actions_on_top and not actions_on_bottom %} -{% endblock %} - -{% block branding %} -

                                            {% trans "Comment moderation queue" %}

                                            -{% endblock %} - -{% block breadcrumbs %}{% endblock %} - -{% block content %} -{% if empty %} -

                                            {% trans "No comments to moderate" %}.

                                            -{% else %} -
                                            -
                                            - - - - - - - - - - - - - - - {% for comment in comments %} - - - - - - - - - - - {% endfor %} - -
                                            {% trans "Action" %}{% trans "Name" %}{% trans "Comment" %}{% trans "Email" %}{% trans "URL" %}{% trans "Authenticated?" %}{% trans "IP Address" %}{% trans "Date posted" %}
                                            - - - - -
                                            - - -
                                            -
                                            {{ comment.name }}{{ comment.comment|truncatewords:"50" }}{{ comment.email }}{{ comment.url }} - {% if comment.user %}{% trans - {{ comment.ip_address }}{{ comment.submit_date|date:"F j, P" }}
                                            -
                                            -
                                            -{% endif %} -{% endblock %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/comments/templates/comments/preview.html --- a/web/lib/django/contrib/comments/templates/comments/preview.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/comments/templates/comments/preview.html Tue May 25 02:43:45 2010 +0200 @@ -5,7 +5,7 @@ {% block content %} {% load comments %} -
                                            + {% csrf_token %} {% if next %}{% endif %} {% if form.errors %}

                                            {% blocktrans count form.errors|length as counter %}Please correct the error below{% plural %}Please correct the errors below{% endblocktrans %}

                                            diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/comments/templatetags/comments.py --- a/web/lib/django/contrib/comments/templatetags/comments.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/comments/templatetags/comments.py Tue May 25 02:43:45 2010 +0200 @@ -81,10 +81,10 @@ object_pk = smart_unicode(object_pk), site__pk = settings.SITE_ID, ) - + # The is_public and is_removed fields are implementation details of the # built-in comment model's spam filtering system, so they might not - # be present on a custom comment model subclass. If they exist, we + # be present on a custom comment model subclass. If they exist, we # should filter on them. field_names = [f.name for f in self.comment_model._meta.fields] if 'is_public' in field_names: @@ -169,6 +169,46 @@ else: return '' +class RenderCommentListNode(CommentListNode): + """Render the comment list directly""" + + #@classmethod + def handle_token(cls, parser, token): + """Class method to parse render_comment_list and return a Node.""" + tokens = token.contents.split() + if tokens[1] != 'for': + raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) + + # {% render_comment_list for obj %} + if len(tokens) == 3: + return cls(object_expr=parser.compile_filter(tokens[2])) + + # {% render_comment_list for app.models pk %} + elif len(tokens) == 4: + return cls( + ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), + object_pk_expr = parser.compile_filter(tokens[3]) + ) + handle_token = classmethod(handle_token) + + def render(self, context): + ctype, object_pk = self.get_target_ctype_pk(context) + if object_pk: + template_search_list = [ + "comments/%s/%s/list.html" % (ctype.app_label, ctype.model), + "comments/%s/list.html" % ctype.app_label, + "comments/list.html" + ] + qs = self.get_query_set(context) + context.push() + liststr = render_to_string(template_search_list, { + "comment_list" : self.get_context_value_from_queryset(context, qs) + }, context) + context.pop() + return liststr + else: + return '' + # We could just register each classmethod directly, but then we'd lose out on # the automagic docstrings-into-admin-docs tricks. So each node gets a cute # wrapper function that just exists to hold the docstring. @@ -217,6 +257,24 @@ return CommentListNode.handle_token(parser, token) #@register.tag +def render_comment_list(parser, token): + """ + Render the comment list (as returned by ``{% get_comment_list %}``) + through the ``comments/list.html`` template + + Syntax:: + + {% render_comment_list for [object] %} + {% render_comment_list for [app].[model] [object_id] %} + + Example usage:: + + {% render_comment_list for event %} + + """ + return RenderCommentListNode.handle_token(parser, token) + +#@register.tag def get_comment_form(parser, token): """ Get a (new) form object to post a new comment. @@ -248,12 +306,28 @@ Example:: - + """ return comments.get_form_target() +#@register.simple_tag +def get_comment_permalink(comment, anchor_pattern=None): + """ + Get the permalink for a comment, optionally specifying the format of the + named anchor to be appended to the end of the URL. + + Example:: + {{ get_comment_permalink comment "#c%(id)s-by-%(user_name)s" }} + """ + + if anchor_pattern: + return comment.get_absolute_url(anchor_pattern) + return comment.get_absolute_url() + register.tag(get_comment_count) register.tag(get_comment_list) register.tag(get_comment_form) register.tag(render_comment_form) register.simple_tag(comment_form_target) +register.simple_tag(get_comment_permalink) +register.tag(render_comment_list) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/comments/urls.py --- a/web/lib/django/contrib/comments/urls.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/comments/urls.py Tue May 25 02:43:45 2010 +0200 @@ -7,7 +7,6 @@ url(r'^flagged/$', 'moderation.flag_done', name='comments-flag-done'), url(r'^delete/(\d+)/$', 'moderation.delete', name='comments-delete'), url(r'^deleted/$', 'moderation.delete_done', name='comments-delete-done'), - url(r'^moderate/$', 'moderation.moderation_queue', name='comments-moderation-queue'), url(r'^approve/(\d+)/$', 'moderation.approve', name='comments-approve'), url(r'^approved/$', 'moderation.approve_done', name='comments-approve-done'), ) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/comments/views/comments.py --- a/web/lib/django/contrib/comments/views/comments.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/comments/views/comments.py Tue May 25 02:43:45 2010 +0200 @@ -1,7 +1,7 @@ from django import http from django.conf import settings from utils import next_redirect, confirmation_view -from django.core.exceptions import ObjectDoesNotExist +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import models from django.shortcuts import render_to_response from django.template import RequestContext @@ -10,6 +10,7 @@ from django.views.decorators.http import require_POST from django.contrib import comments from django.contrib.comments import signals +from django.views.decorators.csrf import csrf_protect class CommentPostBadRequest(http.HttpResponseBadRequest): """ @@ -22,7 +23,9 @@ if settings.DEBUG: self.content = render_to_string("comments/400-debug.html", {"why": why}) -def post_comment(request, next=None): +@csrf_protect +@require_POST +def post_comment(request, next=None, using=None): """ Post a comment. @@ -47,7 +50,7 @@ return CommentPostBadRequest("Missing content_type or object_pk field.") try: model = models.get_model(*ctype.split(".", 1)) - target = model._default_manager.get(pk=object_pk) + target = model._default_manager.using(using).get(pk=object_pk) except TypeError: return CommentPostBadRequest( "Invalid content_type value: %r" % escape(ctype)) @@ -59,6 +62,10 @@ return CommentPostBadRequest( "No object matching content-type %r and object PK %r exists." % \ (escape(ctype), escape(object_pk))) + except (ValueError, ValidationError), e: + return CommentPostBadRequest( + "Attempting go get content-type %r and object PK %r exists raised %s" % \ + (escape(ctype), escape(object_pk), e.__class__.__name__)) # Do we want to preview the comment? preview = "preview" in data @@ -75,8 +82,14 @@ # If there are errors or if we requested a preview show the comment if form.errors or preview: template_list = [ - "comments/%s_%s_preview.html" % tuple(str(model._meta).split(".")), + # These first two exist for purely historical reasons. + # Django v1.0 and v1.1 allowed the underscore format for + # preview templates, so we have to preserve that format. + "comments/%s_%s_preview.html" % (model._meta.app_label, model._meta.module_name), "comments/%s_preview.html" % model._meta.app_label, + # Now the usual directory based template heirarchy. + "comments/%s/%s/preview.html" % (model._meta.app_label, model._meta.module_name), + "comments/%s/preview.html" % model._meta.app_label, "comments/preview.html", ] return render_to_response( @@ -116,8 +129,6 @@ return next_redirect(data, next, comment_done, c=comment._get_pk_val()) -post_comment = require_POST(post_comment) - comment_done = confirmation_view( template = "comments/posted.html", doc = """Display a "comment was posted" success page.""" diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/comments/views/moderation.py --- a/web/lib/django/contrib/comments/views/moderation.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/comments/views/moderation.py Tue May 25 02:43:45 2010 +0200 @@ -3,12 +3,12 @@ from django.shortcuts import get_object_or_404, render_to_response from django.contrib.auth.decorators import login_required, permission_required from utils import next_redirect, confirmation_view -from django.core.paginator import Paginator, InvalidPage -from django.http import Http404 from django.contrib import comments from django.contrib.comments import signals +from django.views.decorators.csrf import csrf_protect -#@login_required +@csrf_protect +@login_required def flag(request, comment_id, next=None): """ Flags a comment. Confirmation on GET, action on POST. @@ -22,18 +22,7 @@ # Flag on POST if request.method == 'POST': - flag, created = comments.models.CommentFlag.objects.get_or_create( - comment = comment, - user = request.user, - flag = comments.models.CommentFlag.SUGGEST_REMOVAL - ) - signals.comment_was_flagged.send( - sender = comment.__class__, - comment = comment, - flag = flag, - created = created, - request = request, - ) + perform_flag(request, comment) return next_redirect(request.POST.copy(), next, flag_done, c=comment.pk) # Render a form on GET @@ -42,9 +31,9 @@ {'comment': comment, "next": next}, template.RequestContext(request) ) -flag = login_required(flag) -#@permission_required("comments.delete_comment") +@csrf_protect +@permission_required("comments.can_moderate") def delete(request, comment_id, next=None): """ Deletes a comment. Confirmation on GET, action on POST. Requires the "can @@ -60,20 +49,7 @@ # Delete on POST if request.method == 'POST': # Flag the comment as deleted instead of actually deleting it. - flag, created = comments.models.CommentFlag.objects.get_or_create( - comment = comment, - user = request.user, - flag = comments.models.CommentFlag.MODERATOR_DELETION - ) - comment.is_removed = True - comment.save() - signals.comment_was_flagged.send( - sender = comment.__class__, - comment = comment, - flag = flag, - created = created, - request = request, - ) + perform_delete(request, comment) return next_redirect(request.POST.copy(), next, delete_done, c=comment.pk) # Render a form on GET @@ -82,9 +58,9 @@ {'comment': comment, "next": next}, template.RequestContext(request) ) -delete = permission_required("comments.can_moderate")(delete) -#@permission_required("comments.can_moderate") +@csrf_protect +@permission_required("comments.can_moderate") def approve(request, comment_id, next=None): """ Approve a comment (that is, mark it as public and non-removed). Confirmation @@ -100,23 +76,7 @@ # Delete on POST if request.method == 'POST': # Flag the comment as approved. - flag, created = comments.models.CommentFlag.objects.get_or_create( - comment = comment, - user = request.user, - flag = comments.models.CommentFlag.MODERATOR_APPROVAL, - ) - - comment.is_removed = False - comment.is_public = True - comment.save() - - signals.comment_was_flagged.send( - sender = comment.__class__, - comment = comment, - flag = flag, - created = created, - request = request, - ) + perform_approve(request, comment) return next_redirect(request.POST.copy(), next, approve_done, c=comment.pk) # Render a form on GET @@ -126,69 +86,64 @@ template.RequestContext(request) ) -approve = permission_required("comments.can_moderate")(approve) +# The following functions actually perform the various flag/aprove/delete +# actions. They've been broken out into seperate functions to that they +# may be called from admin actions. + +def perform_flag(request, comment): + """ + Actually perform the flagging of a comment from a request. + """ + flag, created = comments.models.CommentFlag.objects.get_or_create( + comment = comment, + user = request.user, + flag = comments.models.CommentFlag.SUGGEST_REMOVAL + ) + signals.comment_was_flagged.send( + sender = comment.__class__, + comment = comment, + flag = flag, + created = created, + request = request, + ) + +def perform_delete(request, comment): + flag, created = comments.models.CommentFlag.objects.get_or_create( + comment = comment, + user = request.user, + flag = comments.models.CommentFlag.MODERATOR_DELETION + ) + comment.is_removed = True + comment.save() + signals.comment_was_flagged.send( + sender = comment.__class__, + comment = comment, + flag = flag, + created = created, + request = request, + ) -#@permission_required("comments.can_moderate") -def moderation_queue(request): - """ - Displays a list of unapproved comments to be approved. - - Templates: `comments/moderation_queue.html` - Context: - comments - Comments to be approved (paginated). - empty - Is the comment list empty? - is_paginated - Is there more than one page? - results_per_page - Number of comments per page - has_next - Is there a next page? - has_previous - Is there a previous page? - page - The current page number - next - The next page number - pages - Number of pages - hits - Total number of comments - page_range - Range of page numbers +def perform_approve(request, comment): + flag, created = comments.models.CommentFlag.objects.get_or_create( + comment = comment, + user = request.user, + flag = comments.models.CommentFlag.MODERATOR_APPROVAL, + ) - """ - qs = comments.get_model().objects.filter(is_public=False, is_removed=False) - paginator = Paginator(qs, 100) - - try: - page = int(request.GET.get("page", 1)) - except ValueError: - raise Http404 - - try: - comments_per_page = paginator.page(page) - except InvalidPage: - raise Http404 + comment.is_removed = False + comment.is_public = True + comment.save() - return render_to_response("comments/moderation_queue.html", { - 'comments' : comments_per_page.object_list, - 'empty' : page == 1 and paginator.count == 0, - 'is_paginated': paginator.num_pages > 1, - 'results_per_page': 100, - 'has_next': comments_per_page.has_next(), - 'has_previous': comments_per_page.has_previous(), - 'page': page, - 'next': page + 1, - 'previous': page - 1, - 'pages': paginator.num_pages, - 'hits' : paginator.count, - 'page_range' : paginator.page_range - }, context_instance=template.RequestContext(request)) + signals.comment_was_flagged.send( + sender = comment.__class__, + comment = comment, + flag = flag, + created = created, + request = request, + ) -moderation_queue = permission_required("comments.can_moderate")(moderation_queue) +# Confirmation views. flag_done = confirmation_view( template = "comments/flagged.html", diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/comments/views/utils.py --- a/web/lib/django/contrib/comments/views/utils.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/comments/views/utils.py Tue May 25 02:43:45 2010 +0200 @@ -39,7 +39,7 @@ if 'c' in request.GET: try: comment = comments.get_model().objects.get(pk=request.GET['c']) - except ObjectDoesNotExist: + except (ObjectDoesNotExist, ValueError): pass return render_to_response(template, {'comment': comment}, diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/contenttypes/generic.py --- a/web/lib/django/contrib/contenttypes/generic.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/contenttypes/generic.py Tue May 25 02:43:45 2010 +0200 @@ -5,7 +5,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.db import connection from django.db.models import signals -from django.db import models +from django.db import models, router from django.db.models.fields.related import RelatedField, Field, ManyToManyRel from django.db.models.loading import get_model from django.forms import ModelForm @@ -45,14 +45,14 @@ kwargs[self.ct_field] = self.get_content_type(obj=value) kwargs[self.fk_field] = value._get_pk_val() - def get_content_type(self, obj=None, id=None): + def get_content_type(self, obj=None, id=None, using=None): # Convenience function using get_model avoids a circular import when # using this model ContentType = get_model("contenttypes", "contenttype") if obj: - return ContentType.objects.get_for_model(obj) + return ContentType.objects.db_manager(obj._state.db).get_for_model(obj) elif id: - return ContentType.objects.get_for_id(id) + return ContentType.objects.db_manager(using).get_for_id(id) else: # This should never happen. I love comments like this, don't you? raise Exception("Impossible arguments to GFK.get_content_type!") @@ -73,7 +73,7 @@ f = self.model._meta.get_field(self.ct_field) ct_id = getattr(instance, f.get_attname(), None) if ct_id: - ct = self.get_content_type(id=ct_id) + ct = self.get_content_type(id=ct_id, using=instance._state.db) try: rel_obj = ct.get_object_for_this_type(pk=getattr(instance, self.fk_field)) except ObjectDoesNotExist: @@ -83,7 +83,7 @@ def __set__(self, instance, value): if instance is None: - raise AttributeError, u"%s must be accessed via instance" % self.related.opts.object_name + raise AttributeError(u"%s must be accessed via instance" % self.related.opts.object_name) ct = None fk = None @@ -105,8 +105,6 @@ limit_choices_to=kwargs.pop('limit_choices_to', None), symmetrical=kwargs.pop('symmetrical', True)) - # By its very nature, a GenericRelation doesn't create a table. - self.creates_table = False # Override content-type/object-id field names on the related class self.object_id_field_name = kwargs.pop("object_id_field", "object_id") @@ -131,7 +129,7 @@ return self.object_id_field_name def m2m_reverse_name(self): - return self.model._meta.pk.column + return self.rel.to._meta.pk.column def contribute_to_class(self, cls, name): super(GenericRelation, self).contribute_to_class(cls, name) @@ -151,7 +149,7 @@ def get_internal_type(self): return "ManyToManyField" - def db_type(self): + def db_type(self, connection): # Since we're simulating a ManyToManyField, in effect, best return the # same db_type as well. return None @@ -203,7 +201,7 @@ join_table = qn(self.field.m2m_db_table()), source_col_name = qn(self.field.m2m_column_name()), target_col_name = qn(self.field.m2m_reverse_name()), - content_type = ContentType.objects.get_for_model(instance), + content_type = ContentType.objects.db_manager(instance._state.db).get_for_model(instance), content_type_field_name = self.field.content_type_field_name, object_id_field_name = self.field.object_id_field_name ) @@ -212,7 +210,7 @@ def __set__(self, instance, value): if instance is None: - raise AttributeError, "Manager must be accessed via instance" + raise AttributeError("Manager must be accessed via instance") manager = self.__get__(instance) manager.clear() @@ -245,35 +243,39 @@ self.pk_val = self.instance._get_pk_val() def get_query_set(self): + db = self._db or router.db_for_read(self.model, instance=self.instance) query = { '%s__pk' % self.content_type_field_name : self.content_type.id, '%s__exact' % self.object_id_field_name : self.pk_val, } - return superclass.get_query_set(self).filter(**query) + return superclass.get_query_set(self).using(db).filter(**query) def add(self, *objs): for obj in objs: if not isinstance(obj, self.model): - raise TypeError, "'%s' instance expected" % self.model._meta.object_name + raise TypeError("'%s' instance expected" % self.model._meta.object_name) setattr(obj, self.content_type_field_name, self.content_type) setattr(obj, self.object_id_field_name, self.pk_val) obj.save() add.alters_data = True def remove(self, *objs): + db = router.db_for_write(self.model, instance=self.instance) for obj in objs: - obj.delete() + obj.delete(using=db) remove.alters_data = True def clear(self): + db = router.db_for_write(self.model, instance=self.instance) for obj in self.all(): - obj.delete() + obj.delete(using=db) clear.alters_data = True def create(self, **kwargs): kwargs[self.content_type_field_name] = self.content_type kwargs[self.object_id_field_name] = self.pk_val - return super(GenericRelatedObjectManager, self).create(**kwargs) + db = router.db_for_write(self.model, instance=self.instance) + return super(GenericRelatedObjectManager, self).using(db).create(**kwargs) create.alters_data = True return GenericRelatedObjectManager @@ -291,18 +293,28 @@ """ A formset for generic inline objects to a parent. """ - ct_field_name = "content_type" - ct_fk_field_name = "object_id" - def __init__(self, data=None, files=None, instance=None, save_as_new=None, prefix=None): + def __init__(self, data=None, files=None, instance=None, save_as_new=None, + prefix=None, queryset=None): + # Avoid a circular import. + from django.contrib.contenttypes.models import ContentType opts = self.model._meta self.instance = instance self.rel_name = '-'.join(( opts.app_label, opts.object_name.lower(), self.ct_field.name, self.ct_fk_field.name, )) + if self.instance is None or self.instance.pk is None: + qs = self.model._default_manager.none() + else: + if queryset is None: + queryset = self.model._default_manager + qs = queryset.filter(**{ + self.ct_field.name: ContentType.objects.get_for_model(self.instance), + self.ct_fk_field.name: self.instance.pk, + }) super(BaseGenericInlineFormSet, self).__init__( - queryset=self.get_queryset(), data=data, files=files, + queryset=qs, data=data, files=files, prefix=prefix ) @@ -314,16 +326,6 @@ )) get_default_prefix = classmethod(get_default_prefix) - def get_queryset(self): - # Avoid a circular import. - from django.contrib.contenttypes.models import ContentType - if self.instance is None or self.instance.pk is None: - return self.model._default_manager.none() - return self.model._default_manager.filter(**{ - self.ct_field.name: ContentType.objects.get_for_model(self.instance), - self.ct_fk_field.name: self.instance.pk, - }) - def save_new(self, form, commit=True): # Avoid a circular import. from django.contrib.contenttypes.models import ContentType @@ -339,7 +341,7 @@ ct_field="content_type", fk_field="object_id", fields=None, exclude=None, extra=3, can_order=False, can_delete=True, - max_num=0, + max_num=None, formfield_callback=lambda f: f.formfield()): """ Returns an ``GenericInlineFormSet`` for the given kwargs. @@ -379,6 +381,12 @@ fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None + if self.exclude is None: + exclude = [] + else: + exclude = list(self.exclude) + exclude.extend(self.get_readonly_fields(request, obj)) + exclude = exclude or None defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, @@ -386,11 +394,11 @@ "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, - "can_delete": True, + "can_delete": self.can_delete, "can_order": False, "fields": fields, "max_num": self.max_num, - "exclude": self.exclude + "exclude": exclude } return generic_inlineformset_factory(self.model, **defaults) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/contenttypes/management.py --- a/web/lib/django/contrib/contenttypes/management.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/contenttypes/management.py Tue May 25 02:43:45 2010 +0200 @@ -25,16 +25,34 @@ if verbosity >= 2: print "Adding content type '%s | %s'" % (ct.app_label, ct.model) # The presence of any remaining content types means the supplied app has an - # undefined model and can safely be removed, which cascades to also remove - # related permissions. - for ct in content_types: - if verbosity >= 2: - print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model) - ct.delete() + # undefined model. Confirm that the content type is stale before deletion. + if content_types: + if kwargs.get('interactive', False): + content_type_display = '\n'.join([' %s | %s' % (ct.app_label, ct.model) for ct in content_types]) + ok_to_delete = raw_input("""The following content types are stale and need to be deleted: + +%s + +Any objects related to these content types by a foreign key will also +be deleted. Are you sure you want to delete these content types? +If you're unsure, answer 'no'. -def update_all_contenttypes(verbosity=2): + Type 'yes' to continue, or 'no' to cancel: """ % content_type_display) + else: + ok_to_delete = False + + if ok_to_delete == 'yes': + for ct in content_types: + if verbosity >= 2: + print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model) + ct.delete() + else: + if verbosity >= 2: + print "Stale content types remain." + +def update_all_contenttypes(verbosity=2, **kwargs): for app in get_apps(): - update_contenttypes(app, None, verbosity) + update_contenttypes(app, None, verbosity, **kwargs) signals.post_syncdb.connect(update_contenttypes) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/contenttypes/models.py --- a/web/lib/django/contrib/contenttypes/models.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/contenttypes/models.py Tue May 25 02:43:45 2010 +0200 @@ -8,6 +8,13 @@ # This cache is shared by all the get_for_* methods. _cache = {} + def get_by_natural_key(self, app_label, model): + try: + ct = self.__class__._cache[self.db][(app_label, model)] + except KeyError: + ct = self.get(app_label=app_label, model=model) + return ct + def get_for_model(self, model): """ Returns the ContentType object for a given model, creating the @@ -20,7 +27,7 @@ opts = model._meta key = (opts.app_label, opts.object_name.lower()) try: - ct = self.__class__._cache[key] + ct = self.__class__._cache[self.db][key] except KeyError: # Load or create the ContentType entry. The smart_unicode() is # needed around opts.verbose_name_raw because name_raw might be a @@ -30,7 +37,7 @@ model = opts.object_name.lower(), defaults = {'name': smart_unicode(opts.verbose_name_raw)}, ) - self._add_to_cache(ct) + self._add_to_cache(self.db, ct) return ct @@ -40,12 +47,12 @@ (though ContentTypes are obviously not created on-the-fly by get_by_id). """ try: - ct = self.__class__._cache[id] + ct = self.__class__._cache[self.db][id] except KeyError: # This could raise a DoesNotExist; that's correct behavior and will # make sure that only correct ctypes get stored in the cache dict. ct = self.get(pk=id) - self._add_to_cache(ct) + self._add_to_cache(self.db, ct) return ct def clear_cache(self): @@ -57,12 +64,12 @@ """ self.__class__._cache.clear() - def _add_to_cache(self, ct): + def _add_to_cache(self, using, ct): """Insert a ContentType into the cache.""" model = ct.model_class() key = (model._meta.app_label, model._meta.object_name.lower()) - self.__class__._cache[key] = ct - self.__class__._cache[ct.id] = ct + self.__class__._cache.setdefault(using, {})[key] = ct + self.__class__._cache.setdefault(using, {})[ct.id] = ct class ContentType(models.Model): name = models.CharField(max_length=100) @@ -92,4 +99,7 @@ method. The ObjectNotExist exception, if thrown, will not be caught, so code that calls this method should catch it. """ - return self.model_class()._default_manager.get(**kwargs) + return self.model_class()._default_manager.using(self._state.db).get(**kwargs) + + def natural_key(self): + return (self.app_label, self.model) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/contenttypes/views.py --- a/web/lib/django/contrib/contenttypes/views.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/contenttypes/views.py Tue May 25 02:43:45 2010 +0200 @@ -9,7 +9,7 @@ try: content_type = ContentType.objects.get(pk=content_type_id) obj = content_type.get_object_for_this_type(pk=object_id) - except ObjectDoesNotExist: + except (ObjectDoesNotExist, ValueError): raise http.Http404("Content type %s object %s doesn't exist" % (content_type_id, object_id)) try: absurl = obj.get_absolute_url() diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/csrf/middleware.py --- a/web/lib/django/contrib/csrf/middleware.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/csrf/middleware.py Tue May 25 02:43:45 2010 +0200 @@ -1,160 +1,7 @@ -""" -Cross Site Request Forgery Middleware. - -This module provides a middleware that implements protection -against request forgeries from other sites. -""" - -import re -import itertools -try: - from functools import wraps -except ImportError: - from django.utils.functional import wraps # Python 2.3, 2.4 fallback. - -from django.conf import settings -from django.http import HttpResponseForbidden -from django.utils.hashcompat import md5_constructor -from django.utils.safestring import mark_safe - -_ERROR_MSG = mark_safe('

                                            403 Forbidden

                                            Cross Site Request Forgery detected. Request aborted.

                                            ') - -_POST_FORM_RE = \ - re.compile(r'(]*\bmethod\s*=\s*(\'|"|)POST(\'|"|)\b[^>]*>)', re.IGNORECASE) - -_HTML_TYPES = ('text/html', 'application/xhtml+xml') - -def _make_token(session_id): - return md5_constructor(settings.SECRET_KEY + session_id).hexdigest() - -class CsrfViewMiddleware(object): - """ - Middleware that requires a present and correct csrfmiddlewaretoken - for POST requests that have an active session. - """ - def process_view(self, request, callback, callback_args, callback_kwargs): - if request.method == 'POST': - if getattr(callback, 'csrf_exempt', False): - return None - - if request.is_ajax(): - return None - - try: - session_id = request.COOKIES[settings.SESSION_COOKIE_NAME] - except KeyError: - # No session, no check required - return None - - csrf_token = _make_token(session_id) - # check incoming token - try: - request_csrf_token = request.POST['csrfmiddlewaretoken'] - except KeyError: - return HttpResponseForbidden(_ERROR_MSG) - - if request_csrf_token != csrf_token: - return HttpResponseForbidden(_ERROR_MSG) - - return None - -class CsrfResponseMiddleware(object): - """ - Middleware that post-processes a response to add a - csrfmiddlewaretoken if the response/request have an active - session. - """ - def process_response(self, request, response): - if getattr(response, 'csrf_exempt', False): - return response +from django.middleware.csrf import CsrfMiddleware, CsrfViewMiddleware, CsrfResponseMiddleware +from django.views.decorators.csrf import csrf_exempt, csrf_view_exempt, csrf_response_exempt - csrf_token = None - try: - # This covers a corner case in which the outgoing response - # both contains a form and sets a session cookie. This - # really should not be needed, since it is best if views - # that create a new session (login pages) also do a - # redirect, as is done by all such view functions in - # Django. - cookie = response.cookies[settings.SESSION_COOKIE_NAME] - csrf_token = _make_token(cookie.value) - except KeyError: - # Normal case - look for existing session cookie - try: - session_id = request.COOKIES[settings.SESSION_COOKIE_NAME] - csrf_token = _make_token(session_id) - except KeyError: - # no incoming or outgoing cookie - pass - - if csrf_token is not None and \ - response['Content-Type'].split(';')[0] in _HTML_TYPES: - - # ensure we don't add the 'id' attribute twice (HTML validity) - idattributes = itertools.chain(("id='csrfmiddlewaretoken'",), - itertools.repeat('')) - def add_csrf_field(match): - """Returns the matched tag plus the added element""" - return mark_safe(match.group() + "
                                            " + \ - "
                                            ") - - # Modify any POST forms - response.content = _POST_FORM_RE.sub(add_csrf_field, response.content) - return response - -class CsrfMiddleware(CsrfViewMiddleware, CsrfResponseMiddleware): - """Django middleware that adds protection against Cross Site - Request Forgeries by adding hidden form fields to POST forms and - checking requests for the correct value. - - In the list of middlewares, SessionMiddleware is required, and - must come after this middleware. CsrfMiddleWare must come after - compression middleware. - - If a session ID cookie is present, it is hashed with the - SECRET_KEY setting to create an authentication token. This token - is added to all outgoing POST forms and is expected on all - incoming POST requests that have a session ID cookie. - - If you are setting cookies directly, instead of using Django's - session framework, this middleware will not work. - - CsrfMiddleWare is composed of two middleware, CsrfViewMiddleware - and CsrfResponseMiddleware which can be used independently. - """ - pass - -def csrf_response_exempt(view_func): - """ - Modifies a view function so that its response is exempt - from the post-processing of the CSRF middleware. - """ - def wrapped_view(*args, **kwargs): - resp = view_func(*args, **kwargs) - resp.csrf_exempt = True - return resp - return wraps(view_func)(wrapped_view) - -def csrf_view_exempt(view_func): - """ - Marks a view function as being exempt from CSRF view protection. - """ - # We could just do view_func.csrf_exempt = True, but decorators - # are nicer if they don't have side-effects, so we return a new - # function. - def wrapped_view(*args, **kwargs): - return view_func(*args, **kwargs) - wrapped_view.csrf_exempt = True - return wraps(view_func)(wrapped_view) - -def csrf_exempt(view_func): - """ - Marks a view function as being exempt from the CSRF checks - and post processing. - - This is the same as using both the csrf_view_exempt and - csrf_response_exempt decorators. - """ - return csrf_response_exempt(csrf_view_exempt(view_func)) +import warnings +warnings.warn("This import for CSRF functionality is deprecated. Please use django.middleware.csrf for the middleware and django.views.decorators.csrf for decorators.", + PendingDeprecationWarning + ) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/csrf/models.py --- a/web/lib/django/contrib/csrf/models.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -# models.py file for tests to run. diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/csrf/tests.py --- a/web/lib/django/contrib/csrf/tests.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.test import TestCase -from django.http import HttpRequest, HttpResponse, HttpResponseForbidden -from django.contrib.csrf.middleware import CsrfMiddleware, _make_token, csrf_exempt -from django.conf import settings - - -def post_form_response(): - resp = HttpResponse(content=""" - -""", mimetype="text/html") - return resp - -def test_view(request): - return post_form_response() - -class CsrfMiddlewareTest(TestCase): - - _session_id = "1" - - def _get_GET_no_session_request(self): - return HttpRequest() - - def _get_GET_session_request(self): - req = self._get_GET_no_session_request() - req.COOKIES[settings.SESSION_COOKIE_NAME] = self._session_id - return req - - def _get_POST_session_request(self): - req = self._get_GET_session_request() - req.method = "POST" - return req - - def _get_POST_no_session_request(self): - req = self._get_GET_no_session_request() - req.method = "POST" - return req - - def _get_POST_session_request_with_token(self): - req = self._get_POST_session_request() - req.POST['csrfmiddlewaretoken'] = _make_token(self._session_id) - return req - - def _get_post_form_response(self): - return post_form_response() - - def _get_new_session_response(self): - resp = self._get_post_form_response() - resp.cookies[settings.SESSION_COOKIE_NAME] = self._session_id - return resp - - def _check_token_present(self, response): - self.assertContains(response, "name='csrfmiddlewaretoken' value='%s'" % _make_token(self._session_id)) - - def get_view(self): - return test_view - - # Check the post processing - def test_process_response_no_session(self): - """ - Check the post-processor does nothing if no session active - """ - req = self._get_GET_no_session_request() - resp = self._get_post_form_response() - resp_content = resp.content # needed because process_response modifies resp - resp2 = CsrfMiddleware().process_response(req, resp) - self.assertEquals(resp_content, resp2.content) - - def test_process_response_existing_session(self): - """ - Check that the token is inserted if there is an existing session - """ - req = self._get_GET_session_request() - resp = self._get_post_form_response() - resp_content = resp.content # needed because process_response modifies resp - resp2 = CsrfMiddleware().process_response(req, resp) - self.assertNotEqual(resp_content, resp2.content) - self._check_token_present(resp2) - - def test_process_response_new_session(self): - """ - Check that the token is inserted if there is a new session being started - """ - req = self._get_GET_no_session_request() # no session in request - resp = self._get_new_session_response() # but new session started - resp_content = resp.content # needed because process_response modifies resp - resp2 = CsrfMiddleware().process_response(req, resp) - self.assertNotEqual(resp_content, resp2.content) - self._check_token_present(resp2) - - def test_process_response_exempt_view(self): - """ - Check that no post processing is done for an exempt view - """ - req = self._get_POST_session_request() - resp = csrf_exempt(self.get_view())(req) - resp_content = resp.content - resp2 = CsrfMiddleware().process_response(req, resp) - self.assertEquals(resp_content, resp2.content) - - # Check the request processing - def test_process_request_no_session(self): - """ - Check that if no session is present, the middleware does nothing. - to the incoming request. - """ - req = self._get_POST_no_session_request() - req2 = CsrfMiddleware().process_view(req, self.get_view(), (), {}) - self.assertEquals(None, req2) - - def test_process_request_session_no_token(self): - """ - Check that if a session is present but no token, we get a 'forbidden' - """ - req = self._get_POST_session_request() - req2 = CsrfMiddleware().process_view(req, self.get_view(), (), {}) - self.assertEquals(HttpResponseForbidden, req2.__class__) - - def test_process_request_session_and_token(self): - """ - Check that if a session is present and a token, the middleware lets it through - """ - req = self._get_POST_session_request_with_token() - req2 = CsrfMiddleware().process_view(req, self.get_view(), (), {}) - self.assertEquals(None, req2) - - def test_process_request_session_no_token_exempt_view(self): - """ - Check that if a session is present and no token, but the csrf_exempt - decorator has been applied to the view, the middleware lets it through - """ - req = self._get_POST_session_request() - req2 = CsrfMiddleware().process_view(req, csrf_exempt(self.get_view()), (), {}) - self.assertEquals(None, req2) - - def test_ajax_exemption(self): - """ - Check that AJAX requests are automatically exempted. - """ - req = self._get_POST_session_request() - req.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' - req2 = CsrfMiddleware().process_view(req, self.get_view(), (), {}) - self.assertEquals(None, req2) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/databrowse/datastructures.py --- a/web/lib/django/contrib/databrowse/datastructures.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/databrowse/datastructures.py Tue May 25 02:43:45 2010 +0200 @@ -4,9 +4,8 @@ """ from django.db import models -from django.utils import dateformat +from django.utils import formats from django.utils.text import capfirst -from django.utils.translation import get_date_formats from django.utils.encoding import smart_unicode, smart_str, iri_to_uri from django.utils.safestring import mark_safe from django.db.models.query import QuerySet @@ -156,13 +155,12 @@ objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE) elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField): if self.raw_value: - date_format, datetime_format, time_format = get_date_formats() if isinstance(self.field, models.DateTimeField): - objs = capfirst(dateformat.format(self.raw_value, datetime_format)) + objs = capfirst(formats.date_format(self.raw_value, 'DATETIME_FORMAT')) elif isinstance(self.field, models.TimeField): - objs = capfirst(dateformat.time_format(self.raw_value, time_format)) + objs = capfirst(formats.time_format(self.raw_value, 'TIME_FORMAT')) else: - objs = capfirst(dateformat.format(self.raw_value, date_format)) + objs = capfirst(formats.date_format(self.raw_value, 'DATE_FORMAT')) else: objs = EMPTY_VALUE elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField): diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/databrowse/plugins/calendars.py --- a/web/lib/django/contrib/databrowse/plugins/calendars.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/databrowse/plugins/calendars.py Tue May 25 02:43:45 2010 +0200 @@ -37,7 +37,7 @@ return [mark_safe(u'%s%s/%s/%s/%s/%s/' % ( easy_instance_field.model.url(), plugin_name, easy_instance_field.field.name, - d.year, + str(d.year), datetime_safe.new_date(d).strftime('%b').lower(), d.day))] diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/databrowse/templates/databrowse/calendar_day.html --- a/web/lib/django/contrib/databrowse/templates/databrowse/calendar_day.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/databrowse/templates/databrowse/calendar_day.html Tue May 25 02:43:45 2010 +0200 @@ -4,7 +4,7 @@ {% block content %} - +

                                            {{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}

                                            diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/databrowse/templates/databrowse/calendar_main.html --- a/web/lib/django/contrib/databrowse/templates/databrowse/calendar_main.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/databrowse/templates/databrowse/calendar_main.html Tue May 25 02:43:45 2010 +0200 @@ -10,7 +10,7 @@ diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/databrowse/templates/databrowse/calendar_month.html --- a/web/lib/django/contrib/databrowse/templates/databrowse/calendar_month.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/databrowse/templates/databrowse/calendar_month.html Tue May 25 02:43:45 2010 +0200 @@ -4,9 +4,9 @@ {% block content %} - + -

                                            {{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F Y" }}

                                            +

                                            {{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %} with {{ field.verbose_name }} on {{ month|date:"F Y" }}

                                              {% for object in object_list %} diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/flatpages/views.py --- a/web/lib/django/contrib/flatpages/views.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/flatpages/views.py Tue May 25 02:43:45 2010 +0200 @@ -5,9 +5,15 @@ from django.conf import settings from django.core.xheaders import populate_xheaders from django.utils.safestring import mark_safe +from django.views.decorators.csrf import csrf_protect DEFAULT_TEMPLATE = 'flatpages/default.html' +# This view is called from FlatpageFallbackMiddleware.process_response +# when a 404 is raised, which often means CsrfViewMiddleware.process_view +# has not been called even if CsrfViewMiddleware is installed. So we need +# to use @csrf_protect, in case the template needs {% csrf_token %}. +@csrf_protect def flatpage(request, url): """ Flat page view. diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/formtools/preview.py --- a/web/lib/django/contrib/formtools/preview.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/formtools/preview.py Tue May 25 02:43:45 2010 +0200 @@ -60,6 +60,7 @@ f = self.form(request.POST, auto_id=AUTO_ID) context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state} if f.is_valid(): + self.process_preview(request, f, context) context['hash_field'] = self.unused_name('hash') context['hash_value'] = self.security_hash(request, f) return render_to_response(self.preview_template, context, context_instance=RequestContext(request)) @@ -96,6 +97,13 @@ """ pass + def process_preview(self, request, form, context): + """ + Given a validated form, performs any extra processing before displaying + the preview page, and saves any extra data in context. + """ + pass + def security_hash(self, request, form): """ Calculates the security hash for the given HttpRequest and Form instances. diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/formtools/templates/formtools/form.html --- a/web/lib/django/contrib/formtools/templates/formtools/form.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/formtools/templates/formtools/form.html Tue May 25 02:43:45 2010 +0200 @@ -4,7 +4,7 @@ {% if form.errors %}

                                              Please correct the following errors

                                              {% else %}

                                              Submit

                                              {% endif %} -
                                              +{% csrf_token %} {{ form }}
                                              diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/formtools/templates/formtools/preview.html --- a/web/lib/django/contrib/formtools/templates/formtools/preview.html Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/formtools/templates/formtools/preview.html Tue May 25 02:43:45 2010 +0200 @@ -15,7 +15,7 @@

                                              Security hash: {{ hash_value }}

                                              - +{% csrf_token %} {% for field in form %}{{ field.as_hidden }} {% endfor %} @@ -25,7 +25,7 @@

                                              Or edit it again

                                              - +{% csrf_token %} {{ form }}
                                              diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/formtools/tests.py --- a/web/lib/django/contrib/formtools/tests.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/formtools/tests.py Tue May 25 02:43:45 2010 +0200 @@ -147,15 +147,18 @@ class WizardClass(wizard.FormWizard): def render_template(self, *args, **kw): - return "" + return http.HttpResponse("") def done(self, request, cleaned_data): return http.HttpResponse(success_string) -class DummyRequest(object): +class DummyRequest(http.HttpRequest): def __init__(self, POST=None): + super(DummyRequest, self).__init__() self.method = POST and "POST" or "GET" - self.POST = POST + if POST is not None: + self.POST.update(POST) + self._dont_enforce_csrf_checks = True class WizardTests(TestCase): def test_step_starts_at_zero(self): diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/formtools/utils.py --- a/web/lib/django/contrib/formtools/utils.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/formtools/utils.py Tue May 25 02:43:45 2010 +0200 @@ -32,7 +32,7 @@ data.append(settings.SECRET_KEY) # Use HIGHEST_PROTOCOL because it's the most efficient. It requires - # Python 2.3, but Django requires 2.3 anyway, so that's OK. + # Python 2.3, but Django requires 2.4 anyway, so that's OK. pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL) return md5_constructor(pickled).hexdigest() diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/formtools/wizard.py --- a/web/lib/django/contrib/formtools/wizard.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/formtools/wizard.py Tue May 25 02:43:45 2010 +0200 @@ -14,21 +14,30 @@ from django.utils.hashcompat import md5_constructor from django.utils.translation import ugettext_lazy as _ from django.contrib.formtools.utils import security_hash +from django.utils.decorators import method_decorator +from django.views.decorators.csrf import csrf_protect + class FormWizard(object): - # Dictionary of extra template context variables. - extra_context = {} - # The HTML (and POST data) field name for the "step" variable. step_field_name="wizard_step" # METHODS SUBCLASSES SHOULDN'T OVERRIDE ################################### def __init__(self, form_list, initial=None): - "form_list should be a list of Form classes (not instances)." + """ + Start a new wizard with a list of forms. + + form_list should be a list of Form classes (not instances). + """ self.form_list = form_list[:] self.initial = initial or {} - self.step = 0 # A zero-based counter keeping track of which step we're in. + + # Dictionary of extra template context variables. + self.extra_context = {} + + # A zero-based counter keeping track of which step we're in. + self.step = 0 def __repr__(self): return "step: %d\nform_list: %s\ninitial_data: %s" % (self.step, self.form_list, self.initial) @@ -44,6 +53,7 @@ # hook methods might alter self.form_list. return len(self.form_list) + @method_decorator(csrf_protect) def __call__(self, request, *args, **kwargs): """ Main method that does all the hard work, conforming to the Django view diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/admin/options.py --- a/web/lib/django/contrib/gis/admin/options.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/admin/options.py Tue May 25 02:43:45 2010 +0200 @@ -64,7 +64,7 @@ def get_map_widget(self, db_field): """ Returns a subclass of the OpenLayersWidget (or whatever was specified - in the `widget` attribute) using the settings from the attributes set + in the `widget` attribute) using the settings from the attributes set in this class. """ is_collection = db_field.geom_type in ('MULTIPOINT', 'MULTILINESTRING', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION') @@ -111,12 +111,6 @@ } return OLMap -# Using the Beta OSM in the admin requires the following: -# (1) The Google Maps Mercator projection needs to be added -# to your `spatial_ref_sys` table. You'll need at least GDAL 1.5: -# >>> from django.contrib.gis.gdal import SpatialReference -# >>> from django.contrib.gis.utils import add_postgis_srs -# >>> add_postgis_srs(SpatialReference(900913)) # Adding the Google Projection from django.contrib.gis import gdal if gdal.HAS_GDAL: class OSMGeoAdmin(GeoModelAdmin): diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/__init__.py --- a/web/lib/django/contrib/gis/db/backend/__init__.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/backend/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -1,20 +1,11 @@ -""" - This module provides the backend for spatial SQL construction with Django. - - Specifically, this module will import the correct routines and modules - needed for GeoDjango to interface with the spatial database. -""" -from django.conf import settings -from django.contrib.gis.db.backend.util import gqn +from django.db import connection -# Retrieving the necessary settings from the backend. -if settings.DATABASE_ENGINE == 'postgresql_psycopg2': - from django.contrib.gis.db.backend.postgis import create_test_spatial_db, get_geo_where_clause, SpatialBackend -elif settings.DATABASE_ENGINE == 'oracle': - from django.contrib.gis.db.backend.oracle import create_test_spatial_db, get_geo_where_clause, SpatialBackend -elif settings.DATABASE_ENGINE == 'mysql': - from django.contrib.gis.db.backend.mysql import create_test_spatial_db, get_geo_where_clause, SpatialBackend -elif settings.DATABASE_ENGINE == 'sqlite3': - from django.contrib.gis.db.backend.spatialite import create_test_spatial_db, get_geo_where_clause, SpatialBackend -else: - raise NotImplementedError('No Geographic Backend exists for %s' % settings.DATABASE_ENGINE) +if hasattr(connection.ops, 'spatial_version'): + from warnings import warn + warn('The `django.contrib.gis.db.backend` module was refactored and ' + 'renamed to `django.contrib.gis.db.backends` in 1.2. ' + 'All functionality of `SpatialBackend` ' + 'has been moved to the `ops` attribute of the spatial database ' + 'backend. A `SpatialBackend` alias is provided here for ' + 'backwards-compatibility, but will be removed in 1.3.') + SpatialBackend = connection.ops diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/adaptor.py --- a/web/lib/django/contrib/gis/db/backend/adaptor.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -class WKTAdaptor(object): - """ - This provides an adaptor for Geometries sent to the - MySQL and Oracle database backends. - """ - def __init__(self, geom): - self.wkt = geom.wkt - self.srid = geom.srid - - def __eq__(self, other): - return self.wkt == other.wkt and self.srid == other.srid - - def __str__(self): - return self.wkt - - def prepare_database_save(self, unused): - return self diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/base.py --- a/web/lib/django/contrib/gis/db/backend/base.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -""" - This module holds the base `SpatialBackend` object, which is - instantiated by each spatial backend with the features it has. -""" -# TODO: Create a `Geometry` protocol and allow user to use -# different Geometry objects -- for now we just use GEOSGeometry. -from django.contrib.gis.geos import GEOSGeometry, GEOSException - -class BaseSpatialBackend(object): - Geometry = GEOSGeometry - GeometryException = GEOSException - - def __init__(self, **kwargs): - kwargs.setdefault('distance_functions', {}) - kwargs.setdefault('limited_where', {}) - for k, v in kwargs.iteritems(): setattr(self, k, v) - - def __getattr__(self, name): - """ - All attributes of the spatial backend return False by default. - """ - try: - return self.__dict__[name] - except KeyError: - return False - diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/mysql/__init__.py --- a/web/lib/django/contrib/gis/db/backend/mysql/__init__.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -__all__ = ['create_test_spatial_db', 'get_geo_where_clause', 'SpatialBackend'] - -from django.contrib.gis.db.backend.base import BaseSpatialBackend -from django.contrib.gis.db.backend.adaptor import WKTAdaptor -from django.contrib.gis.db.backend.mysql.creation import create_test_spatial_db -from django.contrib.gis.db.backend.mysql.field import MySQLGeoField -from django.contrib.gis.db.backend.mysql.query import * - -SpatialBackend = BaseSpatialBackend(name='mysql', mysql=True, - gis_terms=MYSQL_GIS_TERMS, - select=GEOM_SELECT, - Adaptor=WKTAdaptor, - Field=MySQLGeoField) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/mysql/creation.py --- a/web/lib/django/contrib/gis/db/backend/mysql/creation.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - -def create_test_spatial_db(verbosity=1, autoclobber=False): - "A wrapper over the MySQL `create_test_db` method." - from django.db import connection - connection.creation.create_test_db(verbosity, autoclobber) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/mysql/field.py --- a/web/lib/django/contrib/gis/db/backend/mysql/field.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -from django.db import connection -from django.db.models.fields import Field # Django base Field class -from django.contrib.gis.db.backend.mysql.query import GEOM_FROM_TEXT - -# Quotename & geographic quotename, respectively. -qn = connection.ops.quote_name - -class MySQLGeoField(Field): - """ - The backend-specific geographic field for MySQL. - """ - - def _geom_index(self, style, db_table): - """ - Creates a spatial index for the geometry column. If MyISAM tables are - used an R-Tree index is created, otherwise a B-Tree index is created. - Thus, for best spatial performance, you should use MyISAM tables - (which do not support transactions). For more information, see Ch. - 16.6.1 of the MySQL 5.0 documentation. - """ - - # Getting the index name. - idx_name = '%s_%s_id' % (db_table, self.column) - - sql = (style.SQL_KEYWORD('CREATE SPATIAL INDEX ') + - style.SQL_TABLE(qn(idx_name)) + - style.SQL_KEYWORD(' ON ') + - style.SQL_TABLE(qn(db_table)) + '(' + - style.SQL_FIELD(qn(self.column)) + ');') - return sql - - def post_create_sql(self, style, db_table): - """ - Returns SQL that will be executed after the model has been - created. - """ - # Getting the geometric index for this Geometry column. - if self.spatial_index: - return (self._geom_index(style, db_table),) - else: - return () - - def db_type(self): - "The OpenGIS name is returned for the MySQL database column type." - return self.geom_type - - def get_placeholder(self, value): - """ - The placeholder here has to include MySQL's WKT constructor. Because - MySQL does not support spatial transformations, there is no need to - modify the placeholder based on the contents of the given value. - """ - return '%s(%%s)' % GEOM_FROM_TEXT diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/mysql/query.py --- a/web/lib/django/contrib/gis/db/backend/mysql/query.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -""" - This module contains the spatial lookup types, and the `get_geo_where_clause` - routine for MySQL. - - Please note that MySQL only supports bounding box queries, also - known as MBRs (Minimum Bounding Rectangles). Moreover, spatial - indices may only be used on MyISAM tables -- if you need - transactions, take a look at PostGIS. -""" -from django.db import connection -qn = connection.ops.quote_name - -# To ease implementation, WKT is passed to/from MySQL. -GEOM_FROM_TEXT = 'GeomFromText' -GEOM_FROM_WKB = 'GeomFromWKB' -GEOM_SELECT = 'AsText(%s)' - -# WARNING: MySQL is NOT compliant w/the OpenGIS specification and -# _every_ one of these lookup types is on the _bounding box_ only. -MYSQL_GIS_FUNCTIONS = { - 'bbcontains' : 'MBRContains', # For consistency w/PostGIS API - 'bboverlaps' : 'MBROverlaps', # .. .. - 'contained' : 'MBRWithin', # .. .. - 'contains' : 'MBRContains', - 'disjoint' : 'MBRDisjoint', - 'equals' : 'MBREqual', - 'exact' : 'MBREqual', - 'intersects' : 'MBRIntersects', - 'overlaps' : 'MBROverlaps', - 'same_as' : 'MBREqual', - 'touches' : 'MBRTouches', - 'within' : 'MBRWithin', - } - -# This lookup type does not require a mapping. -MISC_TERMS = ['isnull'] - -# Assacceptable lookup types for Oracle spatial. -MYSQL_GIS_TERMS = MYSQL_GIS_FUNCTIONS.keys() -MYSQL_GIS_TERMS += MISC_TERMS -MYSQL_GIS_TERMS = dict((term, None) for term in MYSQL_GIS_TERMS) # Making dictionary - -def get_geo_where_clause(table_alias, name, lookup_type, geo_annot): - "Returns the SQL WHERE clause for use in MySQL spatial SQL construction." - # Getting the quoted field as `geo_col`. - geo_col = '%s.%s' % (qn(table_alias), qn(name)) - - # See if a MySQL Geometry function matches the lookup type next - lookup_info = MYSQL_GIS_FUNCTIONS.get(lookup_type, False) - if lookup_info: - return "%s(%s, %%s)" % (lookup_info, geo_col) - - # Handling 'isnull' lookup type - # TODO: Is this needed because MySQL cannot handle NULL - # geometries in its spatial indices. - if lookup_type == 'isnull': - return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or '')) - - raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/oracle/__init__.py --- a/web/lib/django/contrib/gis/db/backend/oracle/__init__.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -__all__ = ['create_test_spatial_db', 'get_geo_where_clause', 'SpatialBackend'] - -from django.contrib.gis.db.backend.base import BaseSpatialBackend -from django.contrib.gis.db.backend.oracle.adaptor import OracleSpatialAdaptor -from django.contrib.gis.db.backend.oracle.creation import create_test_spatial_db -from django.contrib.gis.db.backend.oracle.field import OracleSpatialField -from django.contrib.gis.db.backend.oracle.models import GeometryColumns, SpatialRefSys -from django.contrib.gis.db.backend.oracle.query import * - -SpatialBackend = BaseSpatialBackend(name='oracle', oracle=True, - area=AREA, - centroid=CENTROID, - difference=DIFFERENCE, - distance=DISTANCE, - distance_functions=DISTANCE_FUNCTIONS, - extent=EXTENT, - gis_terms=ORACLE_SPATIAL_TERMS, - gml=ASGML, - intersection=INTERSECTION, - length=LENGTH, - limited_where = {'relate' : None}, - num_geom=NUM_GEOM, - num_points=NUM_POINTS, - perimeter=LENGTH, - point_on_surface=POINT_ON_SURFACE, - select=GEOM_SELECT, - sym_difference=SYM_DIFFERENCE, - transform=TRANSFORM, - unionagg=UNIONAGG, - union=UNION, - Adaptor=OracleSpatialAdaptor, - Field=OracleSpatialField, - GeometryColumns=GeometryColumns, - SpatialRefSys=SpatialRefSys, - ) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/oracle/adaptor.py --- a/web/lib/django/contrib/gis/db/backend/oracle/adaptor.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -from cx_Oracle import CLOB -from django.contrib.gis.db.backend.adaptor import WKTAdaptor - -class OracleSpatialAdaptor(WKTAdaptor): - input_size = CLOB diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/oracle/creation.py --- a/web/lib/django/contrib/gis/db/backend/oracle/creation.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - -def create_test_spatial_db(verbosity=1, autoclobber=False): - "A wrapper over the Oracle `create_test_db` routine." - from django.db import connection - connection.creation.create_test_db(verbosity, autoclobber) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/oracle/field.py --- a/web/lib/django/contrib/gis/db/backend/oracle/field.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -from django.db import connection -from django.db.backends.util import truncate_name -from django.db.models.fields import Field # Django base Field class -from django.contrib.gis.db.backend.util import gqn -from django.contrib.gis.db.backend.oracle.query import TRANSFORM - -# Quotename & geographic quotename, respectively. -qn = connection.ops.quote_name - -class OracleSpatialField(Field): - """ - The backend-specific geographic field for Oracle Spatial. - """ - - empty_strings_allowed = False - - def __init__(self, extent=(-180.0, -90.0, 180.0, 90.0), tolerance=0.05, **kwargs): - """ - Oracle Spatial backend needs to have the extent -- for projected coordinate - systems _you must define the extent manually_, since the coordinates are - for geodetic systems. The `tolerance` keyword specifies the tolerance - for error (in meters), and defaults to 0.05 (5 centimeters). - """ - # Oracle Spatial specific keyword arguments. - self._extent = extent - self._tolerance = tolerance - # Calling the Django field initialization. - super(OracleSpatialField, self).__init__(**kwargs) - - def _add_geom(self, style, db_table): - """ - Adds this geometry column into the Oracle USER_SDO_GEOM_METADATA - table. - """ - # Checking the dimensions. - # TODO: Add support for 3D geometries. - if self.dim != 2: - raise Exception('3D geometries not yet supported on Oracle Spatial backend.') - - # Constructing the SQL that will be used to insert information about - # the geometry column into the USER_GSDO_GEOM_METADATA table. - meta_sql = (style.SQL_KEYWORD('INSERT INTO ') + - style.SQL_TABLE('USER_SDO_GEOM_METADATA') + - ' (%s, %s, %s, %s)\n ' % tuple(map(qn, ['TABLE_NAME', 'COLUMN_NAME', 'DIMINFO', 'SRID'])) + - style.SQL_KEYWORD(' VALUES ') + '(\n ' + - style.SQL_TABLE(gqn(db_table)) + ',\n ' + - style.SQL_FIELD(gqn(self.column)) + ',\n ' + - style.SQL_KEYWORD("MDSYS.SDO_DIM_ARRAY") + '(\n ' + - style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") + - ("('LONG', %s, %s, %s),\n " % (self._extent[0], self._extent[2], self._tolerance)) + - style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") + - ("('LAT', %s, %s, %s)\n ),\n" % (self._extent[1], self._extent[3], self._tolerance)) + - ' %s\n );' % self.srid) - return meta_sql - - def _geom_index(self, style, db_table): - "Creates an Oracle Geometry index (R-tree) for this geometry field." - - # Getting the index name, Oracle doesn't allow object - # names > 30 characters. - idx_name = truncate_name('%s_%s_id' % (db_table, self.column), 30) - - sql = (style.SQL_KEYWORD('CREATE INDEX ') + - style.SQL_TABLE(qn(idx_name)) + - style.SQL_KEYWORD(' ON ') + - style.SQL_TABLE(qn(db_table)) + '(' + - style.SQL_FIELD(qn(self.column)) + ') ' + - style.SQL_KEYWORD('INDEXTYPE IS ') + - style.SQL_TABLE('MDSYS.SPATIAL_INDEX') + ';') - return sql - - def post_create_sql(self, style, db_table): - """ - Returns SQL that will be executed after the model has been - created. - """ - # Getting the meta geometry information. - post_sql = self._add_geom(style, db_table) - - # Getting the geometric index for this Geometry column. - if self.spatial_index: - return (post_sql, self._geom_index(style, db_table)) - else: - return (post_sql,) - - def db_type(self): - "The Oracle geometric data type is MDSYS.SDO_GEOMETRY." - return 'MDSYS.SDO_GEOMETRY' - - def get_placeholder(self, value): - """ - Provides a proper substitution value for Geometries that are not in the - SRID of the field. Specifically, this routine will substitute in the - SDO_CS.TRANSFORM() function call. - """ - if value is None: - return 'NULL' - elif value.srid != self.srid: - # Adding Transform() to the SQL placeholder. - return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (TRANSFORM, value.srid, self.srid) - else: - return 'SDO_GEOMETRY(%%s, %s)' % self.srid diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/oracle/models.py --- a/web/lib/django/contrib/gis/db/backend/oracle/models.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -""" - The GeometryColumns and SpatialRefSys models for the Oracle spatial - backend. - - It should be noted that Oracle Spatial does not have database tables - named according to the OGC standard, so the closest analogs are used. - For example, the `USER_SDO_GEOM_METADATA` is used for the GeometryColumns - model and the `SDO_COORD_REF_SYS` is used for the SpatialRefSys model. -""" -from django.db import models - -class GeometryColumns(models.Model): - "Maps to the Oracle USER_SDO_GEOM_METADATA table." - table_name = models.CharField(max_length=32) - column_name = models.CharField(max_length=1024) - srid = models.IntegerField(primary_key=True) - # TODO: Add support for `diminfo` column (type MDSYS.SDO_DIM_ARRAY). - class Meta: - app_label = 'gis' - db_table = 'USER_SDO_GEOM_METADATA' - managed = False - - @classmethod - def table_name_col(cls): - """ - Returns the name of the metadata column used to store the - the feature table name. - """ - return 'table_name' - - @classmethod - def geom_col_name(cls): - """ - Returns the name of the metadata column used to store the - the feature geometry column. - """ - return 'column_name' - - def __unicode__(self): - return '%s - %s (SRID: %s)' % (self.table_name, self.column_name, self.srid) - -class SpatialRefSys(models.Model): - "Maps to the Oracle MDSYS.CS_SRS table." - cs_name = models.CharField(max_length=68) - srid = models.IntegerField(primary_key=True) - auth_srid = models.IntegerField() - auth_name = models.CharField(max_length=256) - wktext = models.CharField(max_length=2046) - #cs_bounds = models.GeometryField() # TODO - - class Meta: - abstract = True - db_table = 'CS_SRS' - managed = False - - @property - def wkt(self): - return self.wktext - - @classmethod - def wkt_col(cls): - return 'wktext' diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/oracle/query.py --- a/web/lib/django/contrib/gis/db/backend/oracle/query.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -""" - This module contains the spatial lookup types, and the `get_geo_where_clause` - routine for Oracle Spatial. - - Please note that WKT support is broken on the XE version, and thus - this backend will not work on such platforms. Specifically, XE lacks - support for an internal JVM, and Java libraries are required to use - the WKT constructors. -""" -import re -from decimal import Decimal -from django.db import connection -from django.contrib.gis.db.backend.util import SpatialFunction -from django.contrib.gis.measure import Distance -qn = connection.ops.quote_name - -# The GML, distance, transform, and union procedures. -AREA = 'SDO_GEOM.SDO_AREA' -ASGML = 'SDO_UTIL.TO_GMLGEOMETRY' -CENTROID = 'SDO_GEOM.SDO_CENTROID' -DIFFERENCE = 'SDO_GEOM.SDO_DIFFERENCE' -DISTANCE = 'SDO_GEOM.SDO_DISTANCE' -EXTENT = 'SDO_AGGR_MBR' -INTERSECTION = 'SDO_GEOM.SDO_INTERSECTION' -LENGTH = 'SDO_GEOM.SDO_LENGTH' -NUM_GEOM = 'SDO_UTIL.GETNUMELEM' -NUM_POINTS = 'SDO_UTIL.GETNUMVERTICES' -POINT_ON_SURFACE = 'SDO_GEOM.SDO_POINTONSURFACE' -SYM_DIFFERENCE = 'SDO_GEOM.SDO_XOR' -TRANSFORM = 'SDO_CS.TRANSFORM' -UNION = 'SDO_GEOM.SDO_UNION' -UNIONAGG = 'SDO_AGGR_UNION' - -# We want to get SDO Geometries as WKT because it is much easier to -# instantiate GEOS proxies from WKT than SDO_GEOMETRY(...) strings. -# However, this adversely affects performance (i.e., Java is called -# to convert to WKT on every query). If someone wishes to write a -# SDO_GEOMETRY(...) parser in Python, let me know =) -GEOM_SELECT = 'SDO_UTIL.TO_WKTGEOMETRY(%s)' - -#### Classes used in constructing Oracle spatial SQL #### -class SDOOperation(SpatialFunction): - "Base class for SDO* Oracle operations." - def __init__(self, func, **kwargs): - kwargs.setdefault('operator', '=') - kwargs.setdefault('result', 'TRUE') - kwargs.setdefault('end_subst', ") %s '%s'") - super(SDOOperation, self).__init__(func, **kwargs) - -class SDODistance(SpatialFunction): - "Class for Distance queries." - def __init__(self, op, tolerance=0.05): - super(SDODistance, self).__init__(DISTANCE, end_subst=', %s) %%s %%s' % tolerance, - operator=op, result='%%s') - -class SDOGeomRelate(SpatialFunction): - "Class for using SDO_GEOM.RELATE." - def __init__(self, mask, tolerance=0.05): - # SDO_GEOM.RELATE(...) has a peculiar argument order: column, mask, geom, tolerance. - # Moreover, the runction result is the mask (e.g., 'DISJOINT' instead of 'TRUE'). - end_subst = "%s%s) %s '%s'" % (', %%s, ', tolerance, '=', mask) - beg_subst = "%%s(%%s, '%s'" % mask - super(SDOGeomRelate, self).__init__('SDO_GEOM.RELATE', beg_subst=beg_subst, end_subst=end_subst) - -class SDORelate(SpatialFunction): - "Class for using SDO_RELATE." - masks = 'TOUCH|OVERLAPBDYDISJOINT|OVERLAPBDYINTERSECT|EQUAL|INSIDE|COVEREDBY|CONTAINS|COVERS|ANYINTERACT|ON' - mask_regex = re.compile(r'^(%s)(\+(%s))*$' % (masks, masks), re.I) - def __init__(self, mask): - func = 'SDO_RELATE' - if not self.mask_regex.match(mask): - raise ValueError('Invalid %s mask: "%s"' % (func, mask)) - super(SDORelate, self).__init__(func, end_subst=", 'mask=%s') = 'TRUE'" % mask) - -#### Lookup type mapping dictionaries of Oracle spatial operations #### - -# Valid distance types and substitutions -dtypes = (Decimal, Distance, float, int, long) -DISTANCE_FUNCTIONS = { - 'distance_gt' : (SDODistance('>'), dtypes), - 'distance_gte' : (SDODistance('>='), dtypes), - 'distance_lt' : (SDODistance('<'), dtypes), - 'distance_lte' : (SDODistance('<='), dtypes), - 'dwithin' : (SDOOperation('SDO_WITHIN_DISTANCE', - beg_subst="%s(%s, %%s, 'distance=%%s'"), dtypes), - } - -ORACLE_GEOMETRY_FUNCTIONS = { - 'contains' : SDOOperation('SDO_CONTAINS'), - 'coveredby' : SDOOperation('SDO_COVEREDBY'), - 'covers' : SDOOperation('SDO_COVERS'), - 'disjoint' : SDOGeomRelate('DISJOINT'), - 'intersects' : SDOOperation('SDO_OVERLAPBDYINTERSECT'), # TODO: Is this really the same as ST_Intersects()? - 'equals' : SDOOperation('SDO_EQUAL'), - 'exact' : SDOOperation('SDO_EQUAL'), - 'overlaps' : SDOOperation('SDO_OVERLAPS'), - 'same_as' : SDOOperation('SDO_EQUAL'), - 'relate' : (SDORelate, basestring), # Oracle uses a different syntax, e.g., 'mask=inside+touch' - 'touches' : SDOOperation('SDO_TOUCH'), - 'within' : SDOOperation('SDO_INSIDE'), - } -ORACLE_GEOMETRY_FUNCTIONS.update(DISTANCE_FUNCTIONS) - -# This lookup type does not require a mapping. -MISC_TERMS = ['isnull'] - -# Acceptable lookup types for Oracle spatial. -ORACLE_SPATIAL_TERMS = ORACLE_GEOMETRY_FUNCTIONS.keys() -ORACLE_SPATIAL_TERMS += MISC_TERMS -ORACLE_SPATIAL_TERMS = dict((term, None) for term in ORACLE_SPATIAL_TERMS) # Making dictionary for fast lookups - -#### The `get_geo_where_clause` function for Oracle #### -def get_geo_where_clause(table_alias, name, lookup_type, geo_annot): - "Returns the SQL WHERE clause for use in Oracle spatial SQL construction." - # Getting the quoted table name as `geo_col`. - geo_col = '%s.%s' % (qn(table_alias), qn(name)) - - # See if a Oracle Geometry function matches the lookup type next - lookup_info = ORACLE_GEOMETRY_FUNCTIONS.get(lookup_type, False) - if lookup_info: - # Lookup types that are tuples take tuple arguments, e.g., 'relate' and - # 'dwithin' lookup types. - if isinstance(lookup_info, tuple): - # First element of tuple is lookup type, second element is the type - # of the expected argument (e.g., str, float) - sdo_op, arg_type = lookup_info - - # Ensuring that a tuple _value_ was passed in from the user - if not isinstance(geo_annot.value, tuple): - raise TypeError('Tuple required for `%s` lookup type.' % lookup_type) - if len(geo_annot.value) != 2: - raise ValueError('2-element tuple required for %s lookup type.' % lookup_type) - - # Ensuring the argument type matches what we expect. - if not isinstance(geo_annot.value[1], arg_type): - raise TypeError('Argument type should be %s, got %s instead.' % (arg_type, type(geo_annot.value[1]))) - - if lookup_type == 'relate': - # The SDORelate class handles construction for these queries, - # and verifies the mask argument. - return sdo_op(geo_annot.value[1]).as_sql(geo_col) - else: - # Otherwise, just call the `as_sql` method on the SDOOperation instance. - return sdo_op.as_sql(geo_col) - else: - # Lookup info is a SDOOperation instance, whose `as_sql` method returns - # the SQL necessary for the geometry function call. For example: - # SDO_CONTAINS("geoapp_country"."poly", SDO_GEOMTRY('POINT(5 23)', 4326)) = 'TRUE' - return lookup_info.as_sql(geo_col) - elif lookup_type == 'isnull': - # Handling 'isnull' lookup type - return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or '')) - - raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/__init__.py --- a/web/lib/django/contrib/gis/db/backend/postgis/__init__.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -__all__ = ['create_test_spatial_db', 'get_geo_where_clause', 'SpatialBackend'] - -from django.contrib.gis.db.backend.base import BaseSpatialBackend -from django.contrib.gis.db.backend.postgis.adaptor import PostGISAdaptor -from django.contrib.gis.db.backend.postgis.creation import create_test_spatial_db -from django.contrib.gis.db.backend.postgis.field import PostGISField -from django.contrib.gis.db.backend.postgis.models import GeometryColumns, SpatialRefSys -from django.contrib.gis.db.backend.postgis.query import * - -SpatialBackend = BaseSpatialBackend(name='postgis', postgis=True, - area=AREA, - centroid=CENTROID, - collect=COLLECT, - difference=DIFFERENCE, - distance=DISTANCE, - distance_functions=DISTANCE_FUNCTIONS, - distance_sphere=DISTANCE_SPHERE, - distance_spheroid=DISTANCE_SPHEROID, - envelope=ENVELOPE, - extent=EXTENT, - gis_terms=POSTGIS_TERMS, - geojson=ASGEOJSON, - gml=ASGML, - intersection=INTERSECTION, - kml=ASKML, - length=LENGTH, - length_spheroid=LENGTH_SPHEROID, - make_line=MAKE_LINE, - mem_size=MEM_SIZE, - num_geom=NUM_GEOM, - num_points=NUM_POINTS, - perimeter=PERIMETER, - point_on_surface=POINT_ON_SURFACE, - scale=SCALE, - select=GEOM_SELECT, - snap_to_grid=SNAP_TO_GRID, - svg=ASSVG, - sym_difference=SYM_DIFFERENCE, - transform=TRANSFORM, - translate=TRANSLATE, - union=UNION, - unionagg=UNIONAGG, - version=(MAJOR_VERSION, MINOR_VERSION1, MINOR_VERSION2), - Adaptor=PostGISAdaptor, - Field=PostGISField, - GeometryColumns=GeometryColumns, - SpatialRefSys=SpatialRefSys, - ) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/adaptor.py --- a/web/lib/django/contrib/gis/db/backend/postgis/adaptor.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -""" - This object provides quoting for GEOS geometries into PostgreSQL/PostGIS. -""" - -from django.contrib.gis.db.backend.postgis.query import GEOM_FROM_WKB -from psycopg2 import Binary -from psycopg2.extensions import ISQLQuote - -class PostGISAdaptor(object): - def __init__(self, geom): - "Initializes on the geometry." - # Getting the WKB (in string form, to allow easy pickling of - # the adaptor) and the SRID from the geometry. - self.wkb = str(geom.wkb) - self.srid = geom.srid - - def __conform__(self, proto): - # Does the given protocol conform to what Psycopg2 expects? - if proto == ISQLQuote: - return self - else: - raise Exception('Error implementing psycopg2 protocol. Is psycopg2 installed?') - - def __eq__(self, other): - return (self.wkb == other.wkb) and (self.srid == other.srid) - - def __str__(self): - return self.getquoted() - - def getquoted(self): - "Returns a properly quoted string for use in PostgreSQL/PostGIS." - # Want to use WKB, so wrap with psycopg2 Binary() to quote properly. - return "%s(%s, %s)" % (GEOM_FROM_WKB, Binary(self.wkb), self.srid or -1) - - def prepare_database_save(self, unused): - return self diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/creation.py --- a/web/lib/django/contrib/gis/db/backend/postgis/creation.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -import os, re, sys - -from django.conf import settings -from django.core.management import call_command -from django.db import connection -from django.db.backends.creation import TEST_DATABASE_PREFIX -from django.contrib.gis.db.backend.util import getstatusoutput - -def create_lang(db_name, verbosity=1): - "Sets up the pl/pgsql language on the given database." - - # Getting the command-line options for the shell command - options = get_cmd_options(db_name) - - # Constructing the 'createlang' command. - createlang_cmd = 'createlang %splpgsql' % options - if verbosity >= 1: print createlang_cmd - - # Must have database super-user privileges to execute createlang -- it must - # also be in your path. - status, output = getstatusoutput(createlang_cmd) - - # Checking the status of the command, 0 => execution successful - if status: - raise Exception("Error executing 'plpgsql' command: %s\n" % output) - -def _create_with_cursor(db_name, verbosity=1, autoclobber=False): - "Creates database with psycopg2 cursor." - qn = connection.ops.quote_name - - # Constructing the necessary SQL to create the database. - create_sql = 'CREATE DATABASE %s' % qn(db_name) - - # If there's a template database for PostGIS set, then use it. - if hasattr(settings, 'POSTGIS_TEMPLATE'): - create_sql += ' TEMPLATE %s' % qn(settings.POSTGIS_TEMPLATE) - - # The DATABASE_USER must possess the privileges to create a spatial database. - if settings.DATABASE_USER: - create_sql += ' OWNER %s' % qn(settings.DATABASE_USER) - - cursor = connection.cursor() - connection.creation.set_autocommit() - - try: - # Trying to create the database first. - cursor.execute(create_sql) - except Exception, e: - if 'already exists' in e.pgerror.lower(): - # Database already exists, drop and recreate if user agrees. - if not autoclobber: - confirm = raw_input("\nIt appears the database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % db_name) - if autoclobber or confirm == 'yes': - if verbosity >= 1: print 'Destroying old spatial database...' - drop_db(db_name) - if verbosity >= 1: print 'Creating new spatial database...' - cursor.execute(create_sql) - else: - raise Exception('Spatial database creation canceled.') - else: - raise Exception('Spatial database creation failed: "%s"' % e.pgerror.strip()) - -created_regex = re.compile(r'^createdb: database creation failed: ERROR: database ".+" already exists') -def _create_with_shell(db_name, verbosity=1, autoclobber=False): - """ - If no spatial database already exists, then using a cursor will not work. - Thus, a `createdb` command will be issued through the shell to bootstrap - creation of the spatial database. - - TODO: Actually allow this method to be used without a spatial database - in place first. - """ - # Getting the command-line options for the shell command - options = get_cmd_options(False) - if hasattr(settings, 'POSTGIS_TEMPLATE'): - options += '-T %s ' % settings.POSTGIS_TEMPlATE - - create_cmd = 'createdb -O %s %s%s' % (settings.DATABASE_USER, options, db_name) - if verbosity >= 1: print create_cmd - - # Attempting to create the database. - status, output = getstatusoutput(create_cmd) - - if status: - if created_regex.match(output): - if not autoclobber: - confirm = raw_input("\nIt appears the database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % db_name) - if autoclobber or confirm == 'yes': - if verbosity >= 1: print 'Destroying old spatial database...' - drop_cmd = 'dropdb %s%s' % (options, db_name) - status, output = getstatusoutput(drop_cmd) - if status != 0: - raise Exception('Could not drop database %s: %s' % (db_name, output)) - if verbosity >= 1: print 'Creating new spatial database...' - status, output = getstatusoutput(create_cmd) - if status != 0: - raise Exception('Could not create database after dropping: %s' % output) - else: - raise Exception('Spatial Database Creation canceled.') - else: - raise Exception('Unknown error occurred in creating database: %s' % output) - -def create_test_spatial_db(verbosity=1, autoclobber=False, interactive=False): - "Creates a test spatial database based on the settings." - - # Making sure we're using PostgreSQL and psycopg2 - if settings.DATABASE_ENGINE != 'postgresql_psycopg2': - raise Exception('Spatial database creation only supported postgresql_psycopg2 platform.') - - # Getting the spatial database name - db_name = get_spatial_db(test=True) - _create_with_cursor(db_name, verbosity=verbosity, autoclobber=autoclobber) - - # If a template database is used, then don't need to do any of the following. - if not hasattr(settings, 'POSTGIS_TEMPLATE'): - # Creating the db language, does not need to be done on NT platforms - # since the PostGIS installer enables this capability. - if os.name != 'nt': - create_lang(db_name, verbosity=verbosity) - - # Now adding in the PostGIS routines. - load_postgis_sql(db_name, verbosity=verbosity) - - if verbosity >= 1: print 'Creation of spatial database %s successful.' % db_name - - # Closing the connection - connection.close() - settings.DATABASE_NAME = db_name - connection.settings_dict["DATABASE_NAME"] = db_name - can_rollback = connection.creation._rollback_works() - settings.DATABASE_SUPPORTS_TRANSACTIONS = can_rollback - connection.settings_dict["DATABASE_SUPPORTS_TRANSACTIONS"] = can_rollback - - # Syncing the database - call_command('syncdb', verbosity=verbosity, interactive=interactive) - -def drop_db(db_name=False, test=False): - """ - Drops the given database (defaults to what is returned from - get_spatial_db()). All exceptions are propagated up to the caller. - """ - if not db_name: db_name = get_spatial_db(test=test) - cursor = connection.cursor() - cursor.execute('DROP DATABASE %s' % connection.ops.quote_name(db_name)) - -def get_cmd_options(db_name): - "Obtains the command-line PostgreSQL connection options for shell commands." - # The db_name parameter is optional - options = '' - if db_name: - options += '-d %s ' % db_name - if settings.DATABASE_USER: - options += '-U %s ' % settings.DATABASE_USER - if settings.DATABASE_HOST: - options += '-h %s ' % settings.DATABASE_HOST - if settings.DATABASE_PORT: - options += '-p %s ' % settings.DATABASE_PORT - return options - -def get_spatial_db(test=False): - """ - Returns the name of the spatial database. The 'test' keyword may be set - to return the test spatial database name. - """ - if test: - if settings.TEST_DATABASE_NAME: - test_db_name = settings.TEST_DATABASE_NAME - else: - test_db_name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME - return test_db_name - else: - if not settings.DATABASE_NAME: - raise Exception('must configure DATABASE_NAME in settings.py') - return settings.DATABASE_NAME - -def load_postgis_sql(db_name, verbosity=1): - """ - This routine loads up the PostGIS SQL files lwpostgis.sql and - spatial_ref_sys.sql. - """ - # Getting the path to the PostGIS SQL - try: - # POSTGIS_SQL_PATH may be placed in settings to tell GeoDjango where the - # PostGIS SQL files are located. This is especially useful on Win32 - # platforms since the output of pg_config looks like "C:/PROGRA~1/..". - sql_path = settings.POSTGIS_SQL_PATH - except AttributeError: - status, sql_path = getstatusoutput('pg_config --sharedir') - if status: - sql_path = '/usr/local/share' - - # The PostGIS SQL post-creation files. - lwpostgis_file = os.path.join(sql_path, 'lwpostgis.sql') - srefsys_file = os.path.join(sql_path, 'spatial_ref_sys.sql') - if not os.path.isfile(lwpostgis_file): - raise Exception('Could not find PostGIS function definitions in %s' % lwpostgis_file) - if not os.path.isfile(srefsys_file): - raise Exception('Could not find PostGIS spatial reference system definitions in %s' % srefsys_file) - - # Getting the psql command-line options, and command format. - options = get_cmd_options(db_name) - cmd_fmt = 'psql %s-f "%%s"' % options - - # Now trying to load up the PostGIS functions - cmd = cmd_fmt % lwpostgis_file - if verbosity >= 1: print cmd - status, output = getstatusoutput(cmd) - if status: - raise Exception('Error in loading PostGIS lwgeometry routines.') - - # Now trying to load up the Spatial Reference System table - cmd = cmd_fmt % srefsys_file - if verbosity >= 1: print cmd - status, output = getstatusoutput(cmd) - if status: - raise Exception('Error in loading PostGIS spatial_ref_sys table.') - - # Setting the permissions because on Windows platforms the owner - # of the spatial_ref_sys and geometry_columns tables is always - # the postgres user, regardless of how the db is created. - if os.name == 'nt': set_permissions(db_name) - -def set_permissions(db_name): - """ - Sets the permissions on the given database to that of the user specified - in the settings. Needed specifically for PostGIS on Win32 platforms. - """ - cursor = connection.cursor() - user = settings.DATABASE_USER - cursor.execute('ALTER TABLE geometry_columns OWNER TO %s' % user) - cursor.execute('ALTER TABLE spatial_ref_sys OWNER TO %s' % user) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/field.py --- a/web/lib/django/contrib/gis/db/backend/postgis/field.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -from django.db import connection -from django.db.models.fields import Field # Django base Field class -from django.contrib.gis.db.backend.util import gqn -from django.contrib.gis.db.backend.postgis.query import TRANSFORM - -# Quotename & geographic quotename, respectively -qn = connection.ops.quote_name - -class PostGISField(Field): - """ - The backend-specific geographic field for PostGIS. - """ - - def _add_geom(self, style, db_table): - """ - Constructs the addition of the geometry to the table using the - AddGeometryColumn(...) PostGIS (and OGC standard) stored procedure. - - Takes the style object (provides syntax highlighting) and the - database table as parameters. - """ - sql = (style.SQL_KEYWORD('SELECT ') + - style.SQL_TABLE('AddGeometryColumn') + '(' + - style.SQL_TABLE(gqn(db_table)) + ', ' + - style.SQL_FIELD(gqn(self.column)) + ', ' + - style.SQL_FIELD(str(self.srid)) + ', ' + - style.SQL_COLTYPE(gqn(self.geom_type)) + ', ' + - style.SQL_KEYWORD(str(self.dim)) + ');') - - if not self.null: - # Add a NOT NULL constraint to the field - sql += ('\n' + - style.SQL_KEYWORD('ALTER TABLE ') + - style.SQL_TABLE(qn(db_table)) + - style.SQL_KEYWORD(' ALTER ') + - style.SQL_FIELD(qn(self.column)) + - style.SQL_KEYWORD(' SET NOT NULL') + ';') - return sql - - def _geom_index(self, style, db_table, - index_type='GIST', index_opts='GIST_GEOMETRY_OPS'): - "Creates a GiST index for this geometry field." - sql = (style.SQL_KEYWORD('CREATE INDEX ') + - style.SQL_TABLE(qn('%s_%s_id' % (db_table, self.column))) + - style.SQL_KEYWORD(' ON ') + - style.SQL_TABLE(qn(db_table)) + - style.SQL_KEYWORD(' USING ') + - style.SQL_COLTYPE(index_type) + ' ( ' + - style.SQL_FIELD(qn(self.column)) + ' ' + - style.SQL_KEYWORD(index_opts) + ' );') - return sql - - def post_create_sql(self, style, db_table): - """ - Returns SQL that will be executed after the model has been - created. Geometry columns must be added after creation with the - PostGIS AddGeometryColumn() function. - """ - - # Getting the AddGeometryColumn() SQL necessary to create a PostGIS - # geometry field. - post_sql = self._add_geom(style, db_table) - - # If the user wants to index this data, then get the indexing SQL as well. - if self.spatial_index: - return (post_sql, self._geom_index(style, db_table)) - else: - return (post_sql,) - - def _post_delete_sql(self, style, db_table): - "Drops the geometry column." - sql = (style.SQL_KEYWORD('SELECT ') + - style.SQL_KEYWORD('DropGeometryColumn') + '(' + - style.SQL_TABLE(gqn(db_table)) + ', ' + - style.SQL_FIELD(gqn(self.column)) + ');') - return sql - - def db_type(self): - """ - PostGIS geometry columns are added by stored procedures, should be - None. - """ - return None - - def get_placeholder(self, value): - """ - Provides a proper substitution value for Geometries that are not in the - SRID of the field. Specifically, this routine will substitute in the - ST_Transform() function call. - """ - if value is None or value.srid == self.srid: - return '%s' - else: - # Adding Transform() to the SQL placeholder. - return '%s(%%s, %s)' % (TRANSFORM, self.srid) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/management.py --- a/web/lib/django/contrib/gis/db/backend/postgis/management.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -""" - This utility module is for obtaining information about the PostGIS - installation. - - See PostGIS docs at Ch. 6.2.1 for more information on these functions. -""" -import re - -def _get_postgis_func(func): - "Helper routine for calling PostGIS functions and returning their result." - from django.db import connection - cursor = connection.cursor() - cursor.execute('SELECT %s()' % func) - row = cursor.fetchone() - cursor.close() - return row[0] - -### PostGIS management functions ### -def postgis_geos_version(): - "Returns the version of the GEOS library used with PostGIS." - return _get_postgis_func('postgis_geos_version') - -def postgis_lib_version(): - "Returns the version number of the PostGIS library used with PostgreSQL." - return _get_postgis_func('postgis_lib_version') - -def postgis_proj_version(): - "Returns the version of the PROJ.4 library used with PostGIS." - return _get_postgis_func('postgis_proj_version') - -def postgis_version(): - "Returns PostGIS version number and compile-time options." - return _get_postgis_func('postgis_version') - -def postgis_full_version(): - "Returns PostGIS version number and compile-time options." - return _get_postgis_func('postgis_full_version') - -### Routines for parsing output of management functions. ### -version_regex = re.compile('^(?P\d)\.(?P\d)\.(?P\d+)') -def postgis_version_tuple(): - "Returns the PostGIS version as a tuple." - - # Getting the PostGIS version - version = postgis_lib_version() - m = version_regex.match(version) - if m: - major = int(m.group('major')) - minor1 = int(m.group('minor1')) - minor2 = int(m.group('minor2')) - else: - raise Exception('Could not parse PostGIS version string: %s' % version) - - return (version, major, minor1, minor2) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/models.py --- a/web/lib/django/contrib/gis/db/backend/postgis/models.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -""" - The GeometryColumns and SpatialRefSys models for the PostGIS backend. -""" -from django.db import models - -class GeometryColumns(models.Model): - """ - The 'geometry_columns' table from the PostGIS. See the PostGIS - documentation at Ch. 4.2.2. - """ - f_table_catalog = models.CharField(max_length=256) - f_table_schema = models.CharField(max_length=256) - f_table_name = models.CharField(max_length=256) - f_geometry_column = models.CharField(max_length=256) - coord_dimension = models.IntegerField() - srid = models.IntegerField(primary_key=True) - type = models.CharField(max_length=30) - - class Meta: - app_label = 'gis' - db_table = 'geometry_columns' - managed = False - - @classmethod - def table_name_col(cls): - """ - Returns the name of the metadata column used to store the - the feature table name. - """ - return 'f_table_name' - - @classmethod - def geom_col_name(cls): - """ - Returns the name of the metadata column used to store the - the feature geometry column. - """ - return 'f_geometry_column' - - def __unicode__(self): - return "%s.%s - %dD %s field (SRID: %d)" % \ - (self.f_table_name, self.f_geometry_column, - self.coord_dimension, self.type, self.srid) - -class SpatialRefSys(models.Model): - """ - The 'spatial_ref_sys' table from PostGIS. See the PostGIS - documentaiton at Ch. 4.2.1. - """ - srid = models.IntegerField(primary_key=True) - auth_name = models.CharField(max_length=256) - auth_srid = models.IntegerField() - srtext = models.CharField(max_length=2048) - proj4text = models.CharField(max_length=2048) - - class Meta: - abstract = True - db_table = 'spatial_ref_sys' - managed = False - - @property - def wkt(self): - return self.srtext - - @classmethod - def wkt_col(cls): - return 'srtext' diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/postgis/query.py --- a/web/lib/django/contrib/gis/db/backend/postgis/query.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,309 +0,0 @@ -""" - This module contains the spatial lookup types, and the get_geo_where_clause() - routine for PostGIS. -""" - -import re -from decimal import Decimal -from django.db import connection -from django.conf import settings -from django.contrib.gis.measure import Distance -from django.contrib.gis.db.backend.util import SpatialOperation, SpatialFunction - -qn = connection.ops.quote_name - -# Get the PostGIS version information. -# To avoid the need to do a database query to determine the PostGIS version -# each time the server starts up, one can optionally specify a -# POSTGIS_VERSION setting. This setting is intentionally undocumented and -# should be considered experimental, because an upcoming GIS backend -# refactoring might remove the need for it. -if hasattr(settings, 'POSTGIS_VERSION') and settings.POSTGIS_VERSION is not None: - version_tuple = settings.POSTGIS_VERSION -else: - # This import is intentionally within the 'else' so that it isn't executed - # if the POSTGIS_VERSION setting is available. - from django.contrib.gis.db.backend.postgis.management import postgis_version_tuple - version_tuple = postgis_version_tuple() -POSTGIS_VERSION, MAJOR_VERSION, MINOR_VERSION1, MINOR_VERSION2 = version_tuple - -# The supported PostGIS versions. -# TODO: Confirm tests with PostGIS versions 1.1.x -- should work. -# Versions <= 1.0.x do not use GEOS C API, and will not be supported. -if MAJOR_VERSION != 1 or (MAJOR_VERSION == 1 and MINOR_VERSION1 < 1): - raise Exception('PostGIS version %s not supported.' % POSTGIS_VERSION) - -# Versions of PostGIS >= 1.2.2 changed their naming convention to be -# 'SQL-MM-centric' to conform with the ISO standard. Practically, this -# means that 'ST_' prefixes geometry function names. -GEOM_FUNC_PREFIX = '' -if MAJOR_VERSION >= 1: - if (MINOR_VERSION1 > 2 or - (MINOR_VERSION1 == 2 and MINOR_VERSION2 >= 2)): - GEOM_FUNC_PREFIX = 'ST_' - - def get_func(func): return '%s%s' % (GEOM_FUNC_PREFIX, func) - - # Custom selection not needed for PostGIS because GEOS geometries are - # instantiated directly from the HEXEWKB returned by default. If - # WKT is needed for some reason in the future, this value may be changed, - # e.g,, 'AsText(%s)'. - GEOM_SELECT = None - - # Functions used by the GeoManager & GeoQuerySet - AREA = get_func('Area') - ASGEOJSON = get_func('AsGeoJson') - ASKML = get_func('AsKML') - ASGML = get_func('AsGML') - ASSVG = get_func('AsSVG') - CENTROID = get_func('Centroid') - COLLECT = get_func('Collect') - DIFFERENCE = get_func('Difference') - DISTANCE = get_func('Distance') - DISTANCE_SPHERE = get_func('distance_sphere') - DISTANCE_SPHEROID = get_func('distance_spheroid') - ENVELOPE = get_func('Envelope') - EXTENT = get_func('extent') - GEOM_FROM_TEXT = get_func('GeomFromText') - GEOM_FROM_WKB = get_func('GeomFromWKB') - INTERSECTION = get_func('Intersection') - LENGTH = get_func('Length') - LENGTH_SPHEROID = get_func('length_spheroid') - MAKE_LINE = get_func('MakeLine') - MEM_SIZE = get_func('mem_size') - NUM_GEOM = get_func('NumGeometries') - NUM_POINTS = get_func('npoints') - PERIMETER = get_func('Perimeter') - POINT_ON_SURFACE = get_func('PointOnSurface') - SCALE = get_func('Scale') - SNAP_TO_GRID = get_func('SnapToGrid') - SYM_DIFFERENCE = get_func('SymDifference') - TRANSFORM = get_func('Transform') - TRANSLATE = get_func('Translate') - - # Special cases for union, KML, and GeoJSON methods. - if MINOR_VERSION1 < 3: - UNIONAGG = 'GeomUnion' - UNION = 'Union' - else: - UNIONAGG = 'ST_Union' - UNION = 'ST_Union' - - if MINOR_VERSION1 == 1: - ASKML = False - - # Only 1.3.4+ have AsGeoJson. - if (MINOR_VERSION1 < 3 or - (MINOR_VERSION1 == 3 and MINOR_VERSION2 < 4)): - ASGEOJSON = False -else: - raise NotImplementedError('PostGIS versions < 1.0 are not supported.') - -#### Classes used in constructing PostGIS spatial SQL #### -class PostGISOperator(SpatialOperation): - "For PostGIS operators (e.g. `&&`, `~`)." - def __init__(self, operator): - super(PostGISOperator, self).__init__(operator=operator, beg_subst='%s %s %%s') - -class PostGISFunction(SpatialFunction): - "For PostGIS function calls (e.g., `ST_Contains(table, geom)`)." - def __init__(self, function, **kwargs): - super(PostGISFunction, self).__init__(get_func(function), **kwargs) - -class PostGISFunctionParam(PostGISFunction): - "For PostGIS functions that take another parameter (e.g. DWithin, Relate)." - def __init__(self, func): - super(PostGISFunctionParam, self).__init__(func, end_subst=', %%s)') - -class PostGISDistance(PostGISFunction): - "For PostGIS distance operations." - dist_func = 'Distance' - def __init__(self, operator): - super(PostGISDistance, self).__init__(self.dist_func, end_subst=') %s %s', - operator=operator, result='%%s') - -class PostGISSpheroidDistance(PostGISFunction): - "For PostGIS spherical distance operations (using the spheroid)." - dist_func = 'distance_spheroid' - def __init__(self, operator): - # An extra parameter in `end_subst` is needed for the spheroid string. - super(PostGISSpheroidDistance, self).__init__(self.dist_func, - beg_subst='%s(%s, %%s, %%s', - end_subst=') %s %s', - operator=operator, result='%%s') - -class PostGISSphereDistance(PostGISFunction): - "For PostGIS spherical distance operations." - dist_func = 'distance_sphere' - def __init__(self, operator): - super(PostGISSphereDistance, self).__init__(self.dist_func, end_subst=') %s %s', - operator=operator, result='%%s') - -class PostGISRelate(PostGISFunctionParam): - "For PostGIS Relate(, ) calls." - pattern_regex = re.compile(r'^[012TF\*]{9}$') - def __init__(self, pattern): - if not self.pattern_regex.match(pattern): - raise ValueError('Invalid intersection matrix pattern "%s".' % pattern) - super(PostGISRelate, self).__init__('Relate') - -#### Lookup type mapping dictionaries of PostGIS operations. #### - -# PostGIS-specific operators. The commented descriptions of these -# operators come from Section 6.2.2 of the official PostGIS documentation. -POSTGIS_OPERATORS = { - # The "&<" operator returns true if A's bounding box overlaps or - # is to the left of B's bounding box. - 'overlaps_left' : PostGISOperator('&<'), - # The "&>" operator returns true if A's bounding box overlaps or - # is to the right of B's bounding box. - 'overlaps_right' : PostGISOperator('&>'), - # The "<<" operator returns true if A's bounding box is strictly - # to the left of B's bounding box. - 'left' : PostGISOperator('<<'), - # The ">>" operator returns true if A's bounding box is strictly - # to the right of B's bounding box. - 'right' : PostGISOperator('>>'), - # The "&<|" operator returns true if A's bounding box overlaps or - # is below B's bounding box. - 'overlaps_below' : PostGISOperator('&<|'), - # The "|&>" operator returns true if A's bounding box overlaps or - # is above B's bounding box. - 'overlaps_above' : PostGISOperator('|&>'), - # The "<<|" operator returns true if A's bounding box is strictly - # below B's bounding box. - 'strictly_below' : PostGISOperator('<<|'), - # The "|>>" operator returns true if A's bounding box is strictly - # above B's bounding box. - 'strictly_above' : PostGISOperator('|>>'), - # The "~=" operator is the "same as" operator. It tests actual - # geometric equality of two features. So if A and B are the same feature, - # vertex-by-vertex, the operator returns true. - 'same_as' : PostGISOperator('~='), - 'exact' : PostGISOperator('~='), - # The "@" operator returns true if A's bounding box is completely contained - # by B's bounding box. - 'contained' : PostGISOperator('@'), - # The "~" operator returns true if A's bounding box completely contains - # by B's bounding box. - 'bbcontains' : PostGISOperator('~'), - # The "&&" operator returns true if A's bounding box overlaps - # B's bounding box. - 'bboverlaps' : PostGISOperator('&&'), - } - -# For PostGIS >= 1.2.2 the following lookup types will do a bounding box query -# first before calling the more computationally expensive GEOS routines (called -# "inline index magic"): -# 'touches', 'crosses', 'contains', 'intersects', 'within', 'overlaps', and -# 'covers'. -POSTGIS_GEOMETRY_FUNCTIONS = { - 'equals' : PostGISFunction('Equals'), - 'disjoint' : PostGISFunction('Disjoint'), - 'touches' : PostGISFunction('Touches'), - 'crosses' : PostGISFunction('Crosses'), - 'within' : PostGISFunction('Within'), - 'overlaps' : PostGISFunction('Overlaps'), - 'contains' : PostGISFunction('Contains'), - 'intersects' : PostGISFunction('Intersects'), - 'relate' : (PostGISRelate, basestring), - } - -# Valid distance types and substitutions -dtypes = (Decimal, Distance, float, int, long) -def get_dist_ops(operator): - "Returns operations for both regular and spherical distances." - return (PostGISDistance(operator), PostGISSphereDistance(operator), PostGISSpheroidDistance(operator)) -DISTANCE_FUNCTIONS = { - 'distance_gt' : (get_dist_ops('>'), dtypes), - 'distance_gte' : (get_dist_ops('>='), dtypes), - 'distance_lt' : (get_dist_ops('<'), dtypes), - 'distance_lte' : (get_dist_ops('<='), dtypes), - } - -if GEOM_FUNC_PREFIX == 'ST_': - # The ST_DWithin, ST_CoveredBy, and ST_Covers routines become available in 1.2.2+ - POSTGIS_GEOMETRY_FUNCTIONS.update( - {'coveredby' : PostGISFunction('CoveredBy'), - 'covers' : PostGISFunction('Covers'), - }) - DISTANCE_FUNCTIONS['dwithin'] = (PostGISFunctionParam('DWithin'), dtypes) - -# Distance functions are a part of PostGIS geometry functions. -POSTGIS_GEOMETRY_FUNCTIONS.update(DISTANCE_FUNCTIONS) - -# Any other lookup types that do not require a mapping. -MISC_TERMS = ['isnull'] - -# These are the PostGIS-customized QUERY_TERMS -- a list of the lookup types -# allowed for geographic queries. -POSTGIS_TERMS = POSTGIS_OPERATORS.keys() # Getting the operators first -POSTGIS_TERMS += POSTGIS_GEOMETRY_FUNCTIONS.keys() # Adding on the Geometry Functions -POSTGIS_TERMS += MISC_TERMS # Adding any other miscellaneous terms (e.g., 'isnull') -POSTGIS_TERMS = dict((term, None) for term in POSTGIS_TERMS) # Making a dictionary for fast lookups - -# For checking tuple parameters -- not very pretty but gets job done. -def exactly_two(val): return val == 2 -def two_to_three(val): return val >= 2 and val <=3 -def num_params(lookup_type, val): - if lookup_type in DISTANCE_FUNCTIONS and lookup_type != 'dwithin': return two_to_three(val) - else: return exactly_two(val) - -#### The `get_geo_where_clause` function for PostGIS. #### -def get_geo_where_clause(table_alias, name, lookup_type, geo_annot): - "Returns the SQL WHERE clause for use in PostGIS SQL construction." - # Getting the quoted field as `geo_col`. - geo_col = '%s.%s' % (qn(table_alias), qn(name)) - if lookup_type in POSTGIS_OPERATORS: - # See if a PostGIS operator matches the lookup type. - return POSTGIS_OPERATORS[lookup_type].as_sql(geo_col) - elif lookup_type in POSTGIS_GEOMETRY_FUNCTIONS: - # See if a PostGIS geometry function matches the lookup type. - tmp = POSTGIS_GEOMETRY_FUNCTIONS[lookup_type] - - # Lookup types that are tuples take tuple arguments, e.g., 'relate' and - # distance lookups. - if isinstance(tmp, tuple): - # First element of tuple is the PostGISOperation instance, and the - # second element is either the type or a tuple of acceptable types - # that may passed in as further parameters for the lookup type. - op, arg_type = tmp - - # Ensuring that a tuple _value_ was passed in from the user - if not isinstance(geo_annot.value, (tuple, list)): - raise TypeError('Tuple required for `%s` lookup type.' % lookup_type) - - # Number of valid tuple parameters depends on the lookup type. - nparams = len(geo_annot.value) - if not num_params(lookup_type, nparams): - raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type) - - # Ensuring the argument type matches what we expect. - if not isinstance(geo_annot.value[1], arg_type): - raise TypeError('Argument type should be %s, got %s instead.' % (arg_type, type(geo_annot.value[1]))) - - # For lookup type `relate`, the op instance is not yet created (has - # to be instantiated here to check the pattern parameter). - if lookup_type == 'relate': - op = op(geo_annot.value[1]) - elif lookup_type in DISTANCE_FUNCTIONS and lookup_type != 'dwithin': - if geo_annot.geodetic: - # Geodetic distances are only availble from Points to PointFields. - if geo_annot.geom_type != 'POINT': - raise TypeError('PostGIS spherical operations are only valid on PointFields.') - if geo_annot.value[0].geom_typeid != 0: - raise TypeError('PostGIS geometry distance parameter is required to be of type Point.') - # Setting up the geodetic operation appropriately. - if nparams == 3 and geo_annot.value[2] == 'spheroid': op = op[2] - else: op = op[1] - else: - op = op[0] - else: - op = tmp - # Calling the `as_sql` function on the operation instance. - return op.as_sql(geo_col) - elif lookup_type == 'isnull': - # Handling 'isnull' lookup type - return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or '')) - - raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/spatialite/__init__.py --- a/web/lib/django/contrib/gis/db/backend/spatialite/__init__.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -__all__ = ['create_test_spatial_db', 'get_geo_where_clause', 'SpatialBackend'] - -from ctypes.util import find_library -from django.conf import settings -from django.db.backends.signals import connection_created - -from django.contrib.gis.db.backend.base import BaseSpatialBackend -from django.contrib.gis.db.backend.spatialite.adaptor import SpatiaLiteAdaptor -from django.contrib.gis.db.backend.spatialite.creation import create_test_spatial_db -from django.contrib.gis.db.backend.spatialite.field import SpatiaLiteField -from django.contrib.gis.db.backend.spatialite.models import GeometryColumns, SpatialRefSys -from django.contrib.gis.db.backend.spatialite.query import * - -# Here we are figuring out the path to the SpatiLite library (`libspatialite`). -# If it's not in the system PATH, it may be set manually in the settings via -# the `SPATIALITE_LIBRARY_PATH` setting. -spatialite_lib = getattr(settings, 'SPATIALITE_LIBRARY_PATH', find_library('spatialite')) -if spatialite_lib: - def initialize_spatialite(sender=None, **kwargs): - """ - This function initializes the pysqlite2 connection to enable the - loading of extensions, and to load up the SpatiaLite library - extension. - """ - from django.db import connection - connection.connection.enable_load_extension(True) - connection.cursor().execute("SELECT load_extension(%s)", (spatialite_lib,)) - connection_created.connect(initialize_spatialite) -else: - # No SpatiaLite library found. - raise Exception('Unable to locate SpatiaLite, needed to use GeoDjango with sqlite3.') - -SpatialBackend = BaseSpatialBackend(name='spatialite', spatialite=True, - area=AREA, - centroid=CENTROID, - contained=CONTAINED, - difference=DIFFERENCE, - distance=DISTANCE, - distance_functions=DISTANCE_FUNCTIONS, - envelope=ENVELOPE, - from_text=GEOM_FROM_TEXT, - gis_terms=SPATIALITE_TERMS, - intersection=INTERSECTION, - length=LENGTH, - num_geom=NUM_GEOM, - num_points=NUM_POINTS, - point_on_surface=POINT_ON_SURFACE, - scale=SCALE, - select=GEOM_SELECT, - svg=ASSVG, - sym_difference=SYM_DIFFERENCE, - transform=TRANSFORM, - translate=TRANSLATE, - union=UNION, - unionagg=UNIONAGG, - Adaptor=SpatiaLiteAdaptor, - Field=SpatiaLiteField, - GeometryColumns=GeometryColumns, - SpatialRefSys=SpatialRefSys, - ) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/spatialite/adaptor.py --- a/web/lib/django/contrib/gis/db/backend/spatialite/adaptor.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -from django.db.backends.sqlite3.base import Database -from django.contrib.gis.db.backend.adaptor import WKTAdaptor - -class SpatiaLiteAdaptor(WKTAdaptor): - "SQLite adaptor for geometry objects." - def __conform__(self, protocol): - if protocol is Database.PrepareProtocol: - return str(self) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/spatialite/creation.py --- a/web/lib/django/contrib/gis/db/backend/spatialite/creation.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -import os -from django.conf import settings -from django.core.management import call_command -from django.db import connection - -def spatialite_init_file(): - # SPATIALITE_SQL may be placed in settings to tell - # GeoDjango to use a specific user-supplied file. - return getattr(settings, 'SPATIALITE_SQL', 'init_spatialite-2.3.sql') - -def create_test_spatial_db(verbosity=1, autoclobber=False, interactive=False): - "Creates a spatial database based on the settings." - - # Making sure we're using PostgreSQL and psycopg2 - if settings.DATABASE_ENGINE != 'sqlite3': - raise Exception('SpatiaLite database creation only supported on sqlite3 platform.') - - # Getting the test database name using the SQLite backend's - # `_create_test_db`. Unless `TEST_DATABASE_NAME` is defined, - # it returns ":memory:". - db_name = connection.creation._create_test_db(verbosity, autoclobber) - - # Closing out the current connection to the database set in - # originally in the settings. This makes it so `initialize_spatialite` - # function will be run on the connection for the _test_ database instead. - connection.close() - - # Point to the new database - settings.DATABASE_NAME = db_name - connection.settings_dict["DATABASE_NAME"] = db_name - can_rollback = connection.creation._rollback_works() - settings.DATABASE_SUPPORTS_TRANSACTIONS = can_rollback - connection.settings_dict["DATABASE_SUPPORTS_TRANSACTIONS"] = can_rollback - - # Finally, loading up the SpatiaLite SQL file. - load_spatialite_sql(db_name, verbosity=verbosity) - - if verbosity >= 1: - print 'Creation of spatial database %s successful.' % db_name - - # Syncing the database - call_command('syncdb', verbosity=verbosity, interactive=interactive) - -def load_spatialite_sql(db_name, verbosity=1): - """ - This routine loads up the SpatiaLite SQL file. - """ - # Getting the location of the SpatiaLite SQL file, and confirming - # it exists. - spatialite_sql = spatialite_init_file() - if not os.path.isfile(spatialite_sql): - raise Exception('Could not find the SpatiaLite initialization SQL file: %s' % spatialite_sql) - - # Opening up the SpatiaLite SQL initialization file and executing - # as a script. - sql_fh = open(spatialite_sql, 'r') - try: - cur = connection.cursor() - cur.executescript(sql_fh.read()) - finally: - sql_fh.close() diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/spatialite/field.py --- a/web/lib/django/contrib/gis/db/backend/spatialite/field.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -from django.db.models.fields import Field # Django base Field class - -# Quotename & geographic quotename, respectively -from django.db import connection -qn = connection.ops.quote_name -from django.contrib.gis.db.backend.util import gqn -from django.contrib.gis.db.backend.spatialite.query import GEOM_FROM_TEXT, TRANSFORM - -class SpatiaLiteField(Field): - """ - The backend-specific geographic field for SpatiaLite. - """ - - def _add_geom(self, style, db_table): - """ - Constructs the addition of the geometry to the table using the - AddGeometryColumn(...) OpenGIS stored procedure. - - Takes the style object (provides syntax highlighting) and the - database table as parameters. - """ - sql = (style.SQL_KEYWORD('SELECT ') + - style.SQL_TABLE('AddGeometryColumn') + '(' + - style.SQL_TABLE(gqn(db_table)) + ', ' + - style.SQL_FIELD(gqn(self.column)) + ', ' + - style.SQL_FIELD(str(self.srid)) + ', ' + - style.SQL_COLTYPE(gqn(self.geom_type)) + ', ' + - style.SQL_KEYWORD(str(self.dim)) + ', ' + - style.SQL_KEYWORD(str(int(not self.null))) + - ');') - return sql - - def _geom_index(self, style, db_table): - "Creates a spatial index for this geometry field." - sql = (style.SQL_KEYWORD('SELECT ') + - style.SQL_TABLE('CreateSpatialIndex') + '(' + - style.SQL_TABLE(gqn(db_table)) + ', ' + - style.SQL_FIELD(gqn(self.column)) + ');') - return sql - - def post_create_sql(self, style, db_table): - """ - Returns SQL that will be executed after the model has been - created. Geometry columns must be added after creation with the - OpenGIS AddGeometryColumn() function. - """ - # Getting the AddGeometryColumn() SQL necessary to create a OpenGIS - # geometry field. - post_sql = self._add_geom(style, db_table) - - # If the user wants to index this data, then get the indexing SQL as well. - if self.spatial_index: - return (post_sql, self._geom_index(style, db_table)) - else: - return (post_sql,) - - def _post_delete_sql(self, style, db_table): - "Drops the geometry column." - sql = (style.SQL_KEYWORD('SELECT ') + - style.SQL_KEYWORD('DropGeometryColumn') + '(' + - style.SQL_TABLE(gqn(db_table)) + ', ' + - style.SQL_FIELD(gqn(self.column)) + ');') - return sql - - def db_type(self): - """ - SpatiaLite geometry columns are added by stored procedures; - should be None. - """ - return None - - def get_placeholder(self, value): - """ - Provides a proper substitution value for Geometries that are not in the - SRID of the field. Specifically, this routine will substitute in the - Transform() and GeomFromText() function call(s). - """ - if value is None or value.srid == self.srid: - return '%s(%%s,%s)' % (GEOM_FROM_TEXT, self.srid) - else: - # Adding Transform() to the SQL placeholder. - return '%s(%s(%%s,%s), %s)' % (TRANSFORM, GEOM_FROM_TEXT, value.srid, self.srid) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/spatialite/models.py --- a/web/lib/django/contrib/gis/db/backend/spatialite/models.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -""" - The GeometryColumns and SpatialRefSys models for the SpatiaLite backend. -""" -from django.db import models - -class GeometryColumns(models.Model): - """ - The 'geometry_columns' table from SpatiaLite. - """ - f_table_name = models.CharField(max_length=256) - f_geometry_column = models.CharField(max_length=256) - type = models.CharField(max_length=30) - coord_dimension = models.IntegerField() - srid = models.IntegerField(primary_key=True) - spatial_index_enabled = models.IntegerField() - - class Meta: - app_label = 'gis' - db_table = 'geometry_columns' - managed = False - - @classmethod - def table_name_col(cls): - """ - Returns the name of the metadata column used to store the - the feature table name. - """ - return 'f_table_name' - - @classmethod - def geom_col_name(cls): - """ - Returns the name of the metadata column used to store the - the feature geometry column. - """ - return 'f_geometry_column' - - def __unicode__(self): - return "%s.%s - %dD %s field (SRID: %d)" % \ - (self.f_table_name, self.f_geometry_column, - self.coord_dimension, self.type, self.srid) - -class SpatialRefSys(models.Model): - """ - The 'spatial_ref_sys' table from SpatiaLite. - """ - srid = models.IntegerField(primary_key=True) - auth_name = models.CharField(max_length=256) - auth_srid = models.IntegerField() - ref_sys_name = models.CharField(max_length=256) - proj4text = models.CharField(max_length=2048) - - @property - def wkt(self): - from django.contrib.gis.gdal import SpatialReference - return SpatialReference(self.proj4text).wkt - - class Meta: - abstract = True - db_table = 'spatial_ref_sys' - managed = False diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/spatialite/query.py --- a/web/lib/django/contrib/gis/db/backend/spatialite/query.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -""" - This module contains the spatial lookup types, and the get_geo_where_clause() - routine for SpatiaLite. -""" -import re -from decimal import Decimal -from django.db import connection -from django.contrib.gis.measure import Distance -from django.contrib.gis.db.backend.util import SpatialOperation, SpatialFunction -qn = connection.ops.quote_name - -GEOM_SELECT = 'AsText(%s)' - -# Dummy func, in case we need it later: -def get_func(str): - return str - -# Functions used by the GeoManager & GeoQuerySet -AREA = get_func('Area') -ASSVG = get_func('AsSVG') -CENTROID = get_func('Centroid') -CONTAINED = get_func('MbrWithin') -DIFFERENCE = get_func('Difference') -DISTANCE = get_func('Distance') -ENVELOPE = get_func('Envelope') -GEOM_FROM_TEXT = get_func('GeomFromText') -GEOM_FROM_WKB = get_func('GeomFromWKB') -INTERSECTION = get_func('Intersection') -LENGTH = get_func('GLength') # OpenGis defines Length, but this conflicts with an SQLite reserved keyword -NUM_GEOM = get_func('NumGeometries') -NUM_POINTS = get_func('NumPoints') -POINT_ON_SURFACE = get_func('PointOnSurface') -SCALE = get_func('ScaleCoords') -SYM_DIFFERENCE = get_func('SymDifference') -TRANSFORM = get_func('Transform') -TRANSLATE = get_func('ShiftCoords') -UNION = 'GUnion'# OpenGis defines Union, but this conflicts with an SQLite reserved keyword -UNIONAGG = 'GUnion' - -#### Classes used in constructing SpatiaLite spatial SQL #### -class SpatiaLiteOperator(SpatialOperation): - "For SpatiaLite operators (e.g. `&&`, `~`)." - def __init__(self, operator): - super(SpatiaLiteOperator, self).__init__(operator=operator, beg_subst='%s %s %%s') - -class SpatiaLiteFunction(SpatialFunction): - "For SpatiaLite function calls." - def __init__(self, function, **kwargs): - super(SpatiaLiteFunction, self).__init__(get_func(function), **kwargs) - -class SpatiaLiteFunctionParam(SpatiaLiteFunction): - "For SpatiaLite functions that take another parameter." - def __init__(self, func): - super(SpatiaLiteFunctionParam, self).__init__(func, end_subst=', %%s)') - -class SpatiaLiteDistance(SpatiaLiteFunction): - "For SpatiaLite distance operations." - dist_func = 'Distance' - def __init__(self, operator): - super(SpatiaLiteDistance, self).__init__(self.dist_func, end_subst=') %s %s', - operator=operator, result='%%s') - -class SpatiaLiteRelate(SpatiaLiteFunctionParam): - "For SpatiaLite Relate(, ) calls." - pattern_regex = re.compile(r'^[012TF\*]{9}$') - def __init__(self, pattern): - if not self.pattern_regex.match(pattern): - raise ValueError('Invalid intersection matrix pattern "%s".' % pattern) - super(SpatiaLiteRelate, self).__init__('Relate') - - -SPATIALITE_GEOMETRY_FUNCTIONS = { - 'equals' : SpatiaLiteFunction('Equals'), - 'disjoint' : SpatiaLiteFunction('Disjoint'), - 'touches' : SpatiaLiteFunction('Touches'), - 'crosses' : SpatiaLiteFunction('Crosses'), - 'within' : SpatiaLiteFunction('Within'), - 'overlaps' : SpatiaLiteFunction('Overlaps'), - 'contains' : SpatiaLiteFunction('Contains'), - 'intersects' : SpatiaLiteFunction('Intersects'), - 'relate' : (SpatiaLiteRelate, basestring), - # Retruns true if B's bounding box completely contains A's bounding box. - 'contained' : SpatiaLiteFunction('MbrWithin'), - # Returns true if A's bounding box completely contains B's bounding box. - 'bbcontains' : SpatiaLiteFunction('MbrContains'), - # Returns true if A's bounding box overlaps B's bounding box. - 'bboverlaps' : SpatiaLiteFunction('MbrOverlaps'), - # These are implemented here as synonyms for Equals - 'same_as' : SpatiaLiteFunction('Equals'), - 'exact' : SpatiaLiteFunction('Equals'), - } - -# Valid distance types and substitutions -dtypes = (Decimal, Distance, float, int, long) -def get_dist_ops(operator): - "Returns operations for regular distances; spherical distances are not currently supported." - return (SpatiaLiteDistance(operator),) -DISTANCE_FUNCTIONS = { - 'distance_gt' : (get_dist_ops('>'), dtypes), - 'distance_gte' : (get_dist_ops('>='), dtypes), - 'distance_lt' : (get_dist_ops('<'), dtypes), - 'distance_lte' : (get_dist_ops('<='), dtypes), - } - -# Distance functions are a part of SpatiaLite geometry functions. -SPATIALITE_GEOMETRY_FUNCTIONS.update(DISTANCE_FUNCTIONS) - -# Any other lookup types that do not require a mapping. -MISC_TERMS = ['isnull'] - -# These are the SpatiaLite-customized QUERY_TERMS -- a list of the lookup types -# allowed for geographic queries. -SPATIALITE_TERMS = SPATIALITE_GEOMETRY_FUNCTIONS.keys() # Getting the Geometry Functions -SPATIALITE_TERMS += MISC_TERMS # Adding any other miscellaneous terms (e.g., 'isnull') -SPATIALITE_TERMS = dict((term, None) for term in SPATIALITE_TERMS) # Making a dictionary for fast lookups - -#### The `get_geo_where_clause` function for SpatiaLite. #### -def get_geo_where_clause(table_alias, name, lookup_type, geo_annot): - "Returns the SQL WHERE clause for use in SpatiaLite SQL construction." - # Getting the quoted field as `geo_col`. - geo_col = '%s.%s' % (qn(table_alias), qn(name)) - if lookup_type in SPATIALITE_GEOMETRY_FUNCTIONS: - # See if a SpatiaLite geometry function matches the lookup type. - tmp = SPATIALITE_GEOMETRY_FUNCTIONS[lookup_type] - - # Lookup types that are tuples take tuple arguments, e.g., 'relate' and - # distance lookups. - if isinstance(tmp, tuple): - # First element of tuple is the SpatiaLiteOperation instance, and the - # second element is either the type or a tuple of acceptable types - # that may passed in as further parameters for the lookup type. - op, arg_type = tmp - - # Ensuring that a tuple _value_ was passed in from the user - if not isinstance(geo_annot.value, (tuple, list)): - raise TypeError('Tuple required for `%s` lookup type.' % lookup_type) - - # Number of valid tuple parameters depends on the lookup type. - if len(geo_annot.value) != 2: - raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type) - - # Ensuring the argument type matches what we expect. - if not isinstance(geo_annot.value[1], arg_type): - raise TypeError('Argument type should be %s, got %s instead.' % (arg_type, type(geo_annot.value[1]))) - - # For lookup type `relate`, the op instance is not yet created (has - # to be instantiated here to check the pattern parameter). - if lookup_type == 'relate': - op = op(geo_annot.value[1]) - elif lookup_type in DISTANCE_FUNCTIONS: - op = op[0] - else: - op = tmp - # Calling the `as_sql` function on the operation instance. - return op.as_sql(geo_col) - elif lookup_type == 'isnull': - # Handling 'isnull' lookup type - return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or '')) - - raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backend/util.py --- a/web/lib/django/contrib/gis/db/backend/util.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -""" -A collection of utility routines and classes used by the spatial -backends. -""" - -def getstatusoutput(cmd): - """ - Executes a shell command on the platform using subprocess.Popen and - return a tuple of the status and stdout output. - """ - from subprocess import Popen, PIPE - # Set stdout and stderr to PIPE because we want to capture stdout and - # prevent stderr from displaying. - p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE) - # We use p.communicate() instead of p.wait() to avoid deadlocks if the - # output buffers exceed POSIX buffer size. - stdout, stderr = p.communicate() - return p.returncode, stdout.strip() - -def gqn(val): - """ - The geographic quote name function; used for quoting tables and - geometries (they use single rather than the double quotes of the - backend quotename function). - """ - if isinstance(val, basestring): - if isinstance(val, unicode): val = val.encode('ascii') - return "'%s'" % val - else: - return str(val) - -class SpatialOperation(object): - """ - Base class for generating spatial SQL. - """ - def __init__(self, function='', operator='', result='', beg_subst='', end_subst=''): - self.function = function - self.operator = operator - self.result = result - self.beg_subst = beg_subst - try: - # Try and put the operator and result into to the - # end substitution. - self.end_subst = end_subst % (operator, result) - except TypeError: - self.end_subst = end_subst - - @property - def sql_subst(self): - return ''.join([self.beg_subst, self.end_subst]) - - def as_sql(self, geo_col): - return self.sql_subst % self.params(geo_col) - - def params(self, geo_col): - return (geo_col, self.operator) - -class SpatialFunction(SpatialOperation): - """ - Base class for generating spatial SQL related to a function. - """ - def __init__(self, func, beg_subst='%s(%s, %%s', end_subst=')', result='', operator=''): - # Getting the function prefix. - kwargs = {'function' : func, 'operator' : operator, 'result' : result, - 'beg_subst' : beg_subst, 'end_subst' : end_subst,} - super(SpatialFunction, self).__init__(**kwargs) - - def params(self, geo_col): - return (self.function, geo_col) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/adapter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/adapter.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,17 @@ +class WKTAdapter(object): + """ + This provides an adaptor for Geometries sent to the + MySQL and Oracle database backends. + """ + def __init__(self, geom): + self.wkt = geom.wkt + self.srid = geom.srid + + def __eq__(self, other): + return self.wkt == other.wkt and self.srid == other.srid + + def __str__(self): + return self.wkt + + def prepare_database_save(self, unused): + return self diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/base.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/base.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,336 @@ +""" +Base/mixin classes for the spatial backend database operations and the +`SpatialRefSys` model the backend. +""" +import re +from django.conf import settings +from django.contrib.gis import gdal + +class BaseSpatialOperations(object): + """ + This module holds the base `BaseSpatialBackend` object, which is + instantiated by each spatial database backend with the features + it has. + """ + distance_functions = {} + geometry_functions = {} + geometry_operators = {} + geography_operators = {} + geography_functions = {} + gis_terms = {} + truncate_params = {} + + # Quick booleans for the type of this spatial backend, and + # an attribute for the spatial database version tuple (if applicable) + postgis = False + spatialite = False + mysql = False + oracle = False + spatial_version = None + + # How the geometry column should be selected. + select = None + + # Does the spatial database have a geography type? + geography = False + + area = False + centroid = False + difference = False + distance = False + distance_sphere = False + distance_spheroid = False + envelope = False + force_rhr = False + mem_size = False + bounding_circle = False + num_geom = False + num_points = False + perimeter = False + perimeter3d = False + point_on_surface = False + polygonize = False + reverse = False + scale = False + snap_to_grid = False + sym_difference = False + transform = False + translate = False + union = False + + # Aggregates + collect = False + extent = False + extent3d = False + make_line = False + unionagg = False + + # Serialization + geohash = False + geojson = False + gml = False + kml = False + svg = False + + # Constructors + from_text = False + from_wkb = False + + # Default conversion functions for aggregates; will be overridden if implemented + # for the spatial backend. + def convert_extent(self, box): + raise NotImplementedError('Aggregate extent not implemented for this spatial backend.') + + def convert_extent3d(self, box): + raise NotImplementedError('Aggregate 3D extent not implemented for this spatial backend.') + + def convert_geom(self, geom_val, geom_field): + raise NotImplementedError('Aggregate method not implemented for this spatial backend.') + + # For quoting column values, rather than columns. + def geo_quote_name(self, name): + if isinstance(name, unicode): + name = name.encode('ascii') + return "'%s'" % name + + # GeometryField operations + def geo_db_type(self, f): + """ + Returns the database column type for the geometry field on + the spatial backend. + """ + raise NotImplementedError + + def get_distance(self, f, value, lookup_type): + """ + Returns the distance parameters for the given geometry field, + lookup value, and lookup type. + """ + raise NotImplementedError('Distance operations not available on this spatial backend.') + + def get_geom_placeholder(self, f, value): + """ + Returns the placeholder for the given geometry field with the given + value. Depending on the spatial backend, the placeholder may contain a + stored procedure call to the transformation function of the spatial + backend. + """ + raise NotImplementedError + + # Spatial SQL Construction + def spatial_aggregate_sql(self, agg): + raise NotImplementedError('Aggregate support not implemented for this spatial backend.') + + def spatial_lookup_sql(self, lvalue, lookup_type, value, field): + raise NotImplmentedError + + # Routines for getting the OGC-compliant models. + def geometry_columns(self): + raise NotImplementedError + + def spatial_ref_sys(self): + raise NotImplementedError + +class SpatialRefSysMixin(object): + """ + The SpatialRefSysMixin is a class used by the database-dependent + SpatialRefSys objects to reduce redundnant code. + """ + # For pulling out the spheroid from the spatial reference string. This + # regular expression is used only if the user does not have GDAL installed. + # TODO: Flattening not used in all ellipsoids, could also be a minor axis, + # or 'b' parameter. + spheroid_regex = re.compile(r'.+SPHEROID\[\"(?P.+)\",(?P\d+(\.\d+)?),(?P\d{3}\.\d+),') + + # For pulling out the units on platforms w/o GDAL installed. + # TODO: Figure out how to pull out angular units of projected coordinate system and + # fix for LOCAL_CS types. GDAL should be highly recommended for performing + # distance queries. + units_regex = re.compile(r'.+UNIT ?\["(?P[\w \'\(\)]+)", ?(?P[\d\.]+)(,AUTHORITY\["(?P[\w \'\(\)]+)","(?P\d+)"\])?\]([\w ]+)?(,AUTHORITY\["(?P[\w \'\(\)]+)","(?P\d+)"\])?\]$') + + @property + def srs(self): + """ + Returns a GDAL SpatialReference object, if GDAL is installed. + """ + if gdal.HAS_GDAL: + # TODO: Is caching really necessary here? Is complexity worth it? + if hasattr(self, '_srs'): + # Returning a clone of the cached SpatialReference object. + return self._srs.clone() + else: + # Attempting to cache a SpatialReference object. + + # Trying to get from WKT first. + try: + self._srs = gdal.SpatialReference(self.wkt) + return self.srs + except Exception, msg: + pass + + try: + self._srs = gdal.SpatialReference(self.proj4text) + return self.srs + except Exception, msg: + pass + + raise Exception('Could not get OSR SpatialReference from WKT: %s\nError:\n%s' % (self.wkt, msg)) + else: + raise Exception('GDAL is not installed.') + + @property + def ellipsoid(self): + """ + Returns a tuple of the ellipsoid parameters: + (semimajor axis, semiminor axis, and inverse flattening). + """ + if gdal.HAS_GDAL: + return self.srs.ellipsoid + else: + m = self.spheroid_regex.match(self.wkt) + if m: return (float(m.group('major')), float(m.group('flattening'))) + else: return None + + @property + def name(self): + "Returns the projection name." + return self.srs.name + + @property + def spheroid(self): + "Returns the spheroid name for this spatial reference." + return self.srs['spheroid'] + + @property + def datum(self): + "Returns the datum for this spatial reference." + return self.srs['datum'] + + @property + def projected(self): + "Is this Spatial Reference projected?" + if gdal.HAS_GDAL: + return self.srs.projected + else: + return self.wkt.startswith('PROJCS') + + @property + def local(self): + "Is this Spatial Reference local?" + if gdal.HAS_GDAL: + return self.srs.local + else: + return self.wkt.startswith('LOCAL_CS') + + @property + def geographic(self): + "Is this Spatial Reference geographic?" + if gdal.HAS_GDAL: + return self.srs.geographic + else: + return self.wkt.startswith('GEOGCS') + + @property + def linear_name(self): + "Returns the linear units name." + if gdal.HAS_GDAL: + return self.srs.linear_name + elif self.geographic: + return None + else: + m = self.units_regex.match(self.wkt) + return m.group('unit_name') + + @property + def linear_units(self): + "Returns the linear units." + if gdal.HAS_GDAL: + return self.srs.linear_units + elif self.geographic: + return None + else: + m = self.units_regex.match(self.wkt) + return m.group('unit') + + @property + def angular_name(self): + "Returns the name of the angular units." + if gdal.HAS_GDAL: + return self.srs.angular_name + elif self.projected: + return None + else: + m = self.units_regex.match(self.wkt) + return m.group('unit_name') + + @property + def angular_units(self): + "Returns the angular units." + if gdal.HAS_GDAL: + return self.srs.angular_units + elif self.projected: + return None + else: + m = self.units_regex.match(self.wkt) + return m.group('unit') + + @property + def units(self): + "Returns a tuple of the units and the name." + if self.projected or self.local: + return (self.linear_units, self.linear_name) + elif self.geographic: + return (self.angular_units, self.angular_name) + else: + return (None, None) + + @classmethod + def get_units(cls, wkt): + """ + Class method used by GeometryField on initialization to + retrive the units on the given WKT, without having to use + any of the database fields. + """ + if gdal.HAS_GDAL: + return gdal.SpatialReference(wkt).units + else: + m = cls.units_regex.match(wkt) + return m.group('unit'), m.group('unit_name') + + @classmethod + def get_spheroid(cls, wkt, string=True): + """ + Class method used by GeometryField on initialization to + retrieve the `SPHEROID[..]` parameters from the given WKT. + """ + if gdal.HAS_GDAL: + srs = gdal.SpatialReference(wkt) + sphere_params = srs.ellipsoid + sphere_name = srs['spheroid'] + else: + m = cls.spheroid_regex.match(wkt) + if m: + sphere_params = (float(m.group('major')), float(m.group('flattening'))) + sphere_name = m.group('name') + else: + return None + + if not string: + return sphere_name, sphere_params + else: + # `string` parameter used to place in format acceptable by PostGIS + if len(sphere_params) == 3: + radius, flattening = sphere_params[0], sphere_params[2] + else: + radius, flattening = sphere_params + return 'SPHEROID["%s",%s,%s]' % (sphere_name, radius, flattening) + + def __unicode__(self): + """ + Returns the string representation. If GDAL is installed, + it will be 'pretty' OGC WKT. + """ + try: + return unicode(self.srs) + except: + return unicode(self.wkt) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/mysql/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/mysql/base.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/mysql/base.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,13 @@ +from django.db.backends.mysql.base import * +from django.db.backends.mysql.base import DatabaseWrapper as MySQLDatabaseWrapper +from django.contrib.gis.db.backends.mysql.creation import MySQLCreation +from django.contrib.gis.db.backends.mysql.introspection import MySQLIntrospection +from django.contrib.gis.db.backends.mysql.operations import MySQLOperations + +class DatabaseWrapper(MySQLDatabaseWrapper): + + def __init__(self, *args, **kwargs): + super(DatabaseWrapper, self).__init__(*args, **kwargs) + self.creation = MySQLCreation(self) + self.ops = MySQLOperations() + self.introspection = MySQLIntrospection(self) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/mysql/creation.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/mysql/creation.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,18 @@ +from django.db.backends.mysql.creation import DatabaseCreation + +class MySQLCreation(DatabaseCreation): + + def sql_indexes_for_field(self, model, f, style): + from django.contrib.gis.db.models.fields import GeometryField + output = super(MySQLCreation, self).sql_indexes_for_field(model, f, style) + + if isinstance(f, GeometryField): + qn = self.connection.ops.quote_name + db_table = model._meta.db_table + idx_name = '%s_%s_id' % (db_table, f.column) + output.append(style.SQL_KEYWORD('CREATE SPATIAL INDEX ') + + style.SQL_TABLE(qn(idx_name)) + + style.SQL_KEYWORD(' ON ') + + style.SQL_TABLE(qn(db_table)) + '(' + + style.SQL_FIELD(qn(f.column)) + ');') + return output diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/mysql/introspection.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/mysql/introspection.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,32 @@ +from MySQLdb.constants import FIELD_TYPE + +from django.contrib.gis.gdal import OGRGeomType +from django.db.backends.mysql.introspection import DatabaseIntrospection + +class MySQLIntrospection(DatabaseIntrospection): + # Updating the data_types_reverse dictionary with the appropriate + # type for Geometry fields. + data_types_reverse = DatabaseIntrospection.data_types_reverse.copy() + data_types_reverse[FIELD_TYPE.GEOMETRY] = 'GeometryField' + + def get_geometry_type(self, table_name, geo_col): + cursor = self.connection.cursor() + try: + # In order to get the specific geometry type of the field, + # we introspect on the table definition using `DESCRIBE`. + cursor.execute('DESCRIBE %s' % + self.connection.ops.quote_name(table_name)) + # Increment over description info until we get to the geometry + # column. + for column, typ, null, key, default, extra in cursor.fetchall(): + if column == geo_col: + # Using OGRGeomType to convert from OGC name to Django field. + # MySQL does not support 3D or SRIDs, so the field params + # are empty. + field_type = OGRGeomType(typ).django + field_params = {} + break + finally: + cursor.close() + + return field_type, field_params diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/mysql/operations.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/mysql/operations.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,65 @@ +from django.db.backends.mysql.base import DatabaseOperations + +from django.contrib.gis.db.backends.adapter import WKTAdapter +from django.contrib.gis.db.backends.base import BaseSpatialOperations + +class MySQLOperations(DatabaseOperations, BaseSpatialOperations): + + compiler_module = 'django.contrib.gis.db.models.sql.compiler' + mysql = True + name = 'mysql' + select = 'AsText(%s)' + from_wkb = 'GeomFromWKB' + from_text = 'GeomFromText' + + Adapter = WKTAdapter + Adaptor = Adapter # Backwards-compatibility alias. + + geometry_functions = { + 'bbcontains' : 'MBRContains', # For consistency w/PostGIS API + 'bboverlaps' : 'MBROverlaps', # .. .. + 'contained' : 'MBRWithin', # .. .. + 'contains' : 'MBRContains', + 'disjoint' : 'MBRDisjoint', + 'equals' : 'MBREqual', + 'exact' : 'MBREqual', + 'intersects' : 'MBRIntersects', + 'overlaps' : 'MBROverlaps', + 'same_as' : 'MBREqual', + 'touches' : 'MBRTouches', + 'within' : 'MBRWithin', + } + + gis_terms = dict([(term, None) for term in geometry_functions.keys() + ['isnull']]) + + def geo_db_type(self, f): + return f.geom_type + + def get_geom_placeholder(self, value, srid): + """ + The placeholder here has to include MySQL's WKT constructor. Because + MySQL does not support spatial transformations, there is no need to + modify the placeholder based on the contents of the given value. + """ + if hasattr(value, 'expression'): + placeholder = '%s.%s' % tuple(map(self.quote_name, value.cols[value.expression])) + else: + placeholder = '%s(%%s)' % self.from_text + return placeholder + + def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn): + alias, col, db_type = lvalue + + geo_col = '%s.%s' % (qn(alias), qn(col)) + + lookup_info = self.geometry_functions.get(lookup_type, False) + if lookup_info: + return "%s(%s, %s)" % (lookup_info, geo_col, + self.get_geom_placeholder(value, field.srid)) + + # TODO: Is this really necessary? MySQL can't handle NULL geometries + # in its spatial indexes anyways. + if lookup_type == 'isnull': + return "%s IS %sNULL" % (geo_col, (not value and 'NOT ' or '')) + + raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/adapter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/adapter.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5 @@ +from cx_Oracle import CLOB +from django.contrib.gis.db.backends.adapter import WKTAdapter + +class OracleSpatialAdapter(WKTAdapter): + input_size = CLOB diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/base.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/base.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,12 @@ +from django.db.backends.oracle.base import * +from django.db.backends.oracle.base import DatabaseWrapper as OracleDatabaseWrapper +from django.contrib.gis.db.backends.oracle.creation import OracleCreation +from django.contrib.gis.db.backends.oracle.introspection import OracleIntrospection +from django.contrib.gis.db.backends.oracle.operations import OracleOperations + +class DatabaseWrapper(OracleDatabaseWrapper): + def __init__(self, *args, **kwargs): + super(DatabaseWrapper, self).__init__(*args, **kwargs) + self.ops = OracleOperations(self) + self.creation = OracleCreation(self) + self.introspection = OracleIntrospection(self) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/compiler.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/compiler.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,44 @@ +from django.contrib.gis.db.models.sql.compiler import GeoSQLCompiler as BaseGeoSQLCompiler +from django.db.backends.oracle import compiler + +SQLCompiler = compiler.SQLCompiler + +class GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler): + pass + +class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler): + def placeholder(self, field, val): + if field is None: + # A field value of None means the value is raw. + return val + elif hasattr(field, 'get_placeholder'): + # Some fields (e.g. geo fields) need special munging before + # they can be inserted. + ph = field.get_placeholder(val, self.connection) + if ph == 'NULL': + # If the placeholder returned is 'NULL', then we need to + # to remove None from the Query parameters. Specifically, + # cx_Oracle will assume a CHAR type when a placeholder ('%s') + # is used for columns of MDSYS.SDO_GEOMETRY. Thus, we use + # 'NULL' for the value, and remove None from the query params. + # See also #10888. + param_idx = self.query.columns.index(field.column) + params = list(self.query.params) + params.pop(param_idx) + self.query.params = tuple(params) + return ph + else: + # Return the common case for the placeholder + return '%s' + +class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler): + pass + +class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler): + pass + +class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler): + pass + +class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler): + pass diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/creation.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/creation.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,42 @@ +from django.db.backends.oracle.creation import DatabaseCreation +from django.db.backends.util import truncate_name + +class OracleCreation(DatabaseCreation): + + def sql_indexes_for_field(self, model, f, style): + "Return any spatial index creation SQL for the field." + from django.contrib.gis.db.models.fields import GeometryField + + output = super(OracleCreation, self).sql_indexes_for_field(model, f, style) + + if isinstance(f, GeometryField): + gqn = self.connection.ops.geo_quote_name + qn = self.connection.ops.quote_name + db_table = model._meta.db_table + + output.append(style.SQL_KEYWORD('INSERT INTO ') + + style.SQL_TABLE('USER_SDO_GEOM_METADATA') + + ' (%s, %s, %s, %s)\n ' % tuple(map(qn, ['TABLE_NAME', 'COLUMN_NAME', 'DIMINFO', 'SRID'])) + + style.SQL_KEYWORD(' VALUES ') + '(\n ' + + style.SQL_TABLE(gqn(db_table)) + ',\n ' + + style.SQL_FIELD(gqn(f.column)) + ',\n ' + + style.SQL_KEYWORD("MDSYS.SDO_DIM_ARRAY") + '(\n ' + + style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") + + ("('LONG', %s, %s, %s),\n " % (f._extent[0], f._extent[2], f._tolerance)) + + style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") + + ("('LAT', %s, %s, %s)\n ),\n" % (f._extent[1], f._extent[3], f._tolerance)) + + ' %s\n );' % f.srid) + + if f.spatial_index: + # Getting the index name, Oracle doesn't allow object + # names > 30 characters. + idx_name = truncate_name('%s_%s_id' % (db_table, f.column), 30) + + output.append(style.SQL_KEYWORD('CREATE INDEX ') + + style.SQL_TABLE(qn(idx_name)) + + style.SQL_KEYWORD(' ON ') + + style.SQL_TABLE(qn(db_table)) + '(' + + style.SQL_FIELD(qn(f.column)) + ') ' + + style.SQL_KEYWORD('INDEXTYPE IS ') + + style.SQL_TABLE('MDSYS.SPATIAL_INDEX') + ';') + return output diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/introspection.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/introspection.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,39 @@ +import cx_Oracle +from django.db.backends.oracle.introspection import DatabaseIntrospection + +class OracleIntrospection(DatabaseIntrospection): + # Associating any OBJECTVAR instances with GeometryField. Of course, + # this won't work right on Oracle objects that aren't MDSYS.SDO_GEOMETRY, + # but it is the only object type supported within Django anyways. + data_types_reverse = DatabaseIntrospection.data_types_reverse.copy() + data_types_reverse[cx_Oracle.OBJECT] = 'GeometryField' + + def get_geometry_type(self, table_name, geo_col): + cursor = self.connection.cursor() + try: + # Querying USER_SDO_GEOM_METADATA to get the SRID and dimension information. + try: + cursor.execute('SELECT "DIMINFO", "SRID" FROM "USER_SDO_GEOM_METADATA" WHERE "TABLE_NAME"=%s AND "COLUMN_NAME"=%s', + (table_name.upper(), geo_col.upper())) + row = cursor.fetchone() + except Exception, msg: + raise Exception('Could not find entry in USER_SDO_GEOM_METADATA corresponding to "%s"."%s"\n' + 'Error message: %s.' % (table_name, geo_col, msg)) + + # TODO: Research way to find a more specific geometry field type for + # the column's contents. + field_type = 'GeometryField' + + # Getting the field parameters. + field_params = {} + dim, srid = row + if srid != 4326: + field_params['srid'] = srid + # Length of object array ( SDO_DIM_ARRAY ) is number of dimensions. + dim = len(dim) + if dim != 2: + field_params['dim'] = dim + finally: + cursor.close() + + return field_type, field_params diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/models.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,65 @@ +""" + The GeometryColumns and SpatialRefSys models for the Oracle spatial + backend. + + It should be noted that Oracle Spatial does not have database tables + named according to the OGC standard, so the closest analogs are used. + For example, the `USER_SDO_GEOM_METADATA` is used for the GeometryColumns + model and the `SDO_COORD_REF_SYS` is used for the SpatialRefSys model. +""" +from django.contrib.gis.db import models +from django.contrib.gis.db.models.fields import GeometryField +from django.contrib.gis.db.backends.base import SpatialRefSysMixin + +class GeometryColumns(models.Model): + "Maps to the Oracle USER_SDO_GEOM_METADATA table." + table_name = models.CharField(max_length=32) + column_name = models.CharField(max_length=1024) + srid = models.IntegerField(primary_key=True) + # TODO: Add support for `diminfo` column (type MDSYS.SDO_DIM_ARRAY). + class Meta: + db_table = 'USER_SDO_GEOM_METADATA' + managed = False + + @classmethod + def table_name_col(cls): + """ + Returns the name of the metadata column used to store the + the feature table name. + """ + return 'table_name' + + @classmethod + def geom_col_name(cls): + """ + Returns the name of the metadata column used to store the + the feature geometry column. + """ + return 'column_name' + + def __unicode__(self): + return '%s - %s (SRID: %s)' % (self.table_name, self.column_name, self.srid) + +class SpatialRefSys(models.Model, SpatialRefSysMixin): + "Maps to the Oracle MDSYS.CS_SRS table." + cs_name = models.CharField(max_length=68) + srid = models.IntegerField(primary_key=True) + auth_srid = models.IntegerField() + auth_name = models.CharField(max_length=256) + wktext = models.CharField(max_length=2046) + # Optional geometry representing the bounds of this coordinate + # system. By default, all are NULL in the table. + cs_bounds = models.PolygonField(null=True) + objects = models.GeoManager() + + class Meta: + db_table = 'CS_SRS' + managed = False + + @property + def wkt(self): + return self.wktext + + @classmethod + def wkt_col(cls): + return 'wktext' diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/oracle/operations.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/oracle/operations.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,293 @@ +""" + This module contains the spatial lookup types, and the `get_geo_where_clause` + routine for Oracle Spatial. + + Please note that WKT support is broken on the XE version, and thus + this backend will not work on such platforms. Specifically, XE lacks + support for an internal JVM, and Java libraries are required to use + the WKT constructors. +""" +import re +from decimal import Decimal + +from django.db.backends.oracle.base import DatabaseOperations +from django.contrib.gis.db.backends.base import BaseSpatialOperations +from django.contrib.gis.db.backends.oracle.adapter import OracleSpatialAdapter +from django.contrib.gis.db.backends.util import SpatialFunction +from django.contrib.gis.geometry.backend import Geometry +from django.contrib.gis.measure import Distance + +class SDOOperation(SpatialFunction): + "Base class for SDO* Oracle operations." + sql_template = "%(function)s(%(geo_col)s, %(geometry)s) %(operator)s '%(result)s'" + + def __init__(self, func, **kwargs): + kwargs.setdefault('operator', '=') + kwargs.setdefault('result', 'TRUE') + super(SDOOperation, self).__init__(func, **kwargs) + +class SDODistance(SpatialFunction): + "Class for Distance queries." + sql_template = ('%(function)s(%(geo_col)s, %(geometry)s, %(tolerance)s) ' + '%(operator)s %(result)s') + dist_func = 'SDO_GEOM.SDO_DISTANCE' + def __init__(self, op, tolerance=0.05): + super(SDODistance, self).__init__(self.dist_func, + tolerance=tolerance, + operator=op, result='%s') + +class SDODWithin(SpatialFunction): + dwithin_func = 'SDO_WITHIN_DISTANCE' + sql_template = "%(function)s(%(geo_col)s, %(geometry)s, %%s) = 'TRUE'" + def __init__(self): + super(SDODWithin, self).__init__(self.dwithin_func) + +class SDOGeomRelate(SpatialFunction): + "Class for using SDO_GEOM.RELATE." + relate_func = 'SDO_GEOM.RELATE' + sql_template = ("%(function)s(%(geo_col)s, '%(mask)s', %(geometry)s, " + "%(tolerance)s) %(operator)s '%(mask)s'") + def __init__(self, mask, tolerance=0.05): + # SDO_GEOM.RELATE(...) has a peculiar argument order: column, mask, geom, tolerance. + # Moreover, the runction result is the mask (e.g., 'DISJOINT' instead of 'TRUE'). + super(SDOGeomRelate, self).__init__(self.relate_func, operator='=', + mask=mask, tolerance=tolerance) + +class SDORelate(SpatialFunction): + "Class for using SDO_RELATE." + masks = 'TOUCH|OVERLAPBDYDISJOINT|OVERLAPBDYINTERSECT|EQUAL|INSIDE|COVEREDBY|CONTAINS|COVERS|ANYINTERACT|ON' + mask_regex = re.compile(r'^(%s)(\+(%s))*$' % (masks, masks), re.I) + sql_template = "%(function)s(%(geo_col)s, %(geometry)s, 'mask=%(mask)s') = 'TRUE'" + relate_func = 'SDO_RELATE' + def __init__(self, mask): + if not self.mask_regex.match(mask): + raise ValueError('Invalid %s mask: "%s"' % (self.relate_func, mask)) + super(SDORelate, self).__init__(self.relate_func, mask=mask) + +# Valid distance types and substitutions +dtypes = (Decimal, Distance, float, int, long) + +class OracleOperations(DatabaseOperations, BaseSpatialOperations): + compiler_module = "django.contrib.gis.db.backends.oracle.compiler" + + name = 'oracle' + oracle = True + valid_aggregates = dict([(a, None) for a in ('Union', 'Extent')]) + + Adapter = OracleSpatialAdapter + Adaptor = Adapter # Backwards-compatibility alias. + + area = 'SDO_GEOM.SDO_AREA' + gml= 'SDO_UTIL.TO_GMLGEOMETRY' + centroid = 'SDO_GEOM.SDO_CENTROID' + difference = 'SDO_GEOM.SDO_DIFFERENCE' + distance = 'SDO_GEOM.SDO_DISTANCE' + extent= 'SDO_AGGR_MBR' + intersection= 'SDO_GEOM.SDO_INTERSECTION' + length = 'SDO_GEOM.SDO_LENGTH' + num_geom = 'SDO_UTIL.GETNUMELEM' + num_points = 'SDO_UTIL.GETNUMVERTICES' + perimeter = length + point_on_surface = 'SDO_GEOM.SDO_POINTONSURFACE' + reverse = 'SDO_UTIL.REVERSE_LINESTRING' + sym_difference = 'SDO_GEOM.SDO_XOR' + transform = 'SDO_CS.TRANSFORM' + union = 'SDO_GEOM.SDO_UNION' + unionagg = 'SDO_AGGR_UNION' + + # We want to get SDO Geometries as WKT because it is much easier to + # instantiate GEOS proxies from WKT than SDO_GEOMETRY(...) strings. + # However, this adversely affects performance (i.e., Java is called + # to convert to WKT on every query). If someone wishes to write a + # SDO_GEOMETRY(...) parser in Python, let me know =) + select = 'SDO_UTIL.TO_WKTGEOMETRY(%s)' + + distance_functions = { + 'distance_gt' : (SDODistance('>'), dtypes), + 'distance_gte' : (SDODistance('>='), dtypes), + 'distance_lt' : (SDODistance('<'), dtypes), + 'distance_lte' : (SDODistance('<='), dtypes), + 'dwithin' : (SDODWithin(), dtypes), + } + + geometry_functions = { + 'contains' : SDOOperation('SDO_CONTAINS'), + 'coveredby' : SDOOperation('SDO_COVEREDBY'), + 'covers' : SDOOperation('SDO_COVERS'), + 'disjoint' : SDOGeomRelate('DISJOINT'), + 'intersects' : SDOOperation('SDO_OVERLAPBDYINTERSECT'), # TODO: Is this really the same as ST_Intersects()? + 'equals' : SDOOperation('SDO_EQUAL'), + 'exact' : SDOOperation('SDO_EQUAL'), + 'overlaps' : SDOOperation('SDO_OVERLAPS'), + 'same_as' : SDOOperation('SDO_EQUAL'), + 'relate' : (SDORelate, basestring), # Oracle uses a different syntax, e.g., 'mask=inside+touch' + 'touches' : SDOOperation('SDO_TOUCH'), + 'within' : SDOOperation('SDO_INSIDE'), + } + geometry_functions.update(distance_functions) + + gis_terms = ['isnull'] + gis_terms += geometry_functions.keys() + gis_terms = dict([(term, None) for term in gis_terms]) + + truncate_params = {'relate' : None} + + def __init__(self, connection): + super(OracleOperations, self).__init__() + self.connection = connection + + def convert_extent(self, clob): + if clob: + # Generally, Oracle returns a polygon for the extent -- however, + # it can return a single point if there's only one Point in the + # table. + ext_geom = Geometry(clob.read()) + gtype = str(ext_geom.geom_type) + if gtype == 'Polygon': + # Construct the 4-tuple from the coordinates in the polygon. + shell = ext_geom.shell + ll, ur = shell[0][:2], shell[2][:2] + elif gtype == 'Point': + ll = ext_geom.coords[:2] + ur = ll + else: + raise Exception('Unexpected geometry type returned for extent: %s' % gtype) + xmin, ymin = ll + xmax, ymax = ur + return (xmin, ymin, xmax, ymax) + else: + return None + + def convert_geom(self, clob, geo_field): + if clob: + return Geometry(clob.read(), geo_field.srid) + else: + return None + + def geo_db_type(self, f): + """ + Returns the geometry database type for Oracle. Unlike other spatial + backends, no stored procedure is necessary and it's the same for all + geometry types. + """ + return 'MDSYS.SDO_GEOMETRY' + + def get_distance(self, f, value, lookup_type): + """ + Returns the distance parameters given the value and the lookup type. + On Oracle, geometry columns with a geodetic coordinate system behave + implicitly like a geography column, and thus meters will be used as + the distance parameter on them. + """ + if not value: + return [] + value = value[0] + if isinstance(value, Distance): + if f.geodetic(self.connection): + dist_param = value.m + else: + dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection))) + else: + dist_param = value + + # dwithin lookups on oracle require a special string parameter + # that starts with "distance=". + if lookup_type == 'dwithin': + dist_param = 'distance=%s' % dist_param + + return [dist_param] + + def get_geom_placeholder(self, f, value): + """ + Provides a proper substitution value for Geometries that are not in the + SRID of the field. Specifically, this routine will substitute in the + SDO_CS.TRANSFORM() function call. + """ + if value is None: + return 'NULL' + + def transform_value(val, srid): + return val.srid != srid + + if hasattr(value, 'expression'): + if transform_value(value, f.srid): + placeholder = '%s(%%s, %s)' % (self.transform, f.srid) + else: + placeholder = '%s' + # No geometry value used for F expression, substitue in + # the column name instead. + return placeholder % '%s.%s' % tuple(map(self.quote_name, value.cols[value.expression])) + else: + if transform_value(value, f.srid): + return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (self.transform, value.srid, f.srid) + else: + return 'SDO_GEOMETRY(%%s, %s)' % f.srid + + def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn): + "Returns the SQL WHERE clause for use in Oracle spatial SQL construction." + alias, col, db_type = lvalue + + # Getting the quoted table name as `geo_col`. + geo_col = '%s.%s' % (qn(alias), qn(col)) + + # See if a Oracle Geometry function matches the lookup type next + lookup_info = self.geometry_functions.get(lookup_type, False) + if lookup_info: + # Lookup types that are tuples take tuple arguments, e.g., 'relate' and + # 'dwithin' lookup types. + if isinstance(lookup_info, tuple): + # First element of tuple is lookup type, second element is the type + # of the expected argument (e.g., str, float) + sdo_op, arg_type = lookup_info + geom = value[0] + + # Ensuring that a tuple _value_ was passed in from the user + if not isinstance(value, tuple): + raise ValueError('Tuple required for `%s` lookup type.' % lookup_type) + if len(value) != 2: + raise ValueError('2-element tuple required for %s lookup type.' % lookup_type) + + # Ensuring the argument type matches what we expect. + if not isinstance(value[1], arg_type): + raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1]))) + + if lookup_type == 'relate': + # The SDORelate class handles construction for these queries, + # and verifies the mask argument. + return sdo_op(value[1]).as_sql(geo_col, self.get_geom_placeholder(field, geom)) + else: + # Otherwise, just call the `as_sql` method on the SDOOperation instance. + return sdo_op.as_sql(geo_col, self.get_geom_placeholder(field, geom)) + else: + # Lookup info is a SDOOperation instance, whose `as_sql` method returns + # the SQL necessary for the geometry function call. For example: + # SDO_CONTAINS("geoapp_country"."poly", SDO_GEOMTRY('POINT(5 23)', 4326)) = 'TRUE' + return lookup_info.as_sql(geo_col, self.get_geom_placeholder(field, value)) + elif lookup_type == 'isnull': + # Handling 'isnull' lookup type + return "%s IS %sNULL" % (geo_col, (not value and 'NOT ' or '')) + + raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) + + def spatial_aggregate_sql(self, agg): + """ + Returns the spatial aggregate SQL template and function for the + given Aggregate instance. + """ + agg_name = agg.__class__.__name__.lower() + if agg_name == 'union' : agg_name += 'agg' + if agg.is_extent: + sql_template = '%(function)s(%(field)s)' + else: + sql_template = '%(function)s(SDOAGGRTYPE(%(field)s,%(tolerance)s))' + sql_function = getattr(self, agg_name) + return self.select % sql_template, sql_function + + # Routines for getting the OGC-compliant models. + def geometry_columns(self): + from django.contrib.gis.db.backends.oracle.models import GeometryColumns + return GeometryColumns + + def spatial_ref_sys(self): + from django.contrib.gis.db.backends.oracle.models import SpatialRefSys + return SpatialRefSys diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/adapter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/postgis/adapter.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,35 @@ +""" + This object provides quoting for GEOS geometries into PostgreSQL/PostGIS. +""" + +from psycopg2 import Binary +from psycopg2.extensions import ISQLQuote + +class PostGISAdapter(object): + def __init__(self, geom): + "Initializes on the geometry." + # Getting the WKB (in string form, to allow easy pickling of + # the adaptor) and the SRID from the geometry. + self.ewkb = str(geom.ewkb) + self.srid = geom.srid + + def __conform__(self, proto): + # Does the given protocol conform to what Psycopg2 expects? + if proto == ISQLQuote: + return self + else: + raise Exception('Error implementing psycopg2 protocol. Is psycopg2 installed?') + + def __eq__(self, other): + return (self.ewkb == other.ewkb) and (self.srid == other.srid) + + def __str__(self): + return self.getquoted() + + def getquoted(self): + "Returns a properly quoted string for use in PostgreSQL/PostGIS." + # Want to use WKB, so wrap with psycopg2 Binary() to quote properly. + return 'ST_GeomFromEWKB(E%s)' % Binary(self.ewkb) + + def prepare_database_save(self, unused): + return self diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/base.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/postgis/base.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,12 @@ +from django.db.backends.postgresql_psycopg2.base import * +from django.db.backends.postgresql_psycopg2.base import DatabaseWrapper as Psycopg2DatabaseWrapper +from django.contrib.gis.db.backends.postgis.creation import PostGISCreation +from django.contrib.gis.db.backends.postgis.introspection import PostGISIntrospection +from django.contrib.gis.db.backends.postgis.operations import PostGISOperations + +class DatabaseWrapper(Psycopg2DatabaseWrapper): + def __init__(self, *args, **kwargs): + super(DatabaseWrapper, self).__init__(*args, **kwargs) + self.creation = PostGISCreation(self) + self.ops = PostGISOperations(self) + self.introspection = PostGISIntrospection(self) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/creation.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/postgis/creation.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,60 @@ +from django.conf import settings +from django.db.backends.postgresql.creation import DatabaseCreation + +class PostGISCreation(DatabaseCreation): + geom_index_type = 'GIST' + geom_index_opts = 'GIST_GEOMETRY_OPS' + + def sql_indexes_for_field(self, model, f, style): + "Return any spatial index creation SQL for the field." + from django.contrib.gis.db.models.fields import GeometryField + + output = super(PostGISCreation, self).sql_indexes_for_field(model, f, style) + + if isinstance(f, GeometryField): + gqn = self.connection.ops.geo_quote_name + qn = self.connection.ops.quote_name + db_table = model._meta.db_table + + if f.geography: + # Geogrophy columns are created normally. + pass + else: + # Geometry columns are created by `AddGeometryColumn` + # stored procedure. + output.append(style.SQL_KEYWORD('SELECT ') + + style.SQL_TABLE('AddGeometryColumn') + '(' + + style.SQL_TABLE(gqn(db_table)) + ', ' + + style.SQL_FIELD(gqn(f.column)) + ', ' + + style.SQL_FIELD(str(f.srid)) + ', ' + + style.SQL_COLTYPE(gqn(f.geom_type)) + ', ' + + style.SQL_KEYWORD(str(f.dim)) + ');') + + if not f.null: + # Add a NOT NULL constraint to the field + output.append(style.SQL_KEYWORD('ALTER TABLE ') + + style.SQL_TABLE(qn(db_table)) + + style.SQL_KEYWORD(' ALTER ') + + style.SQL_FIELD(qn(f.column)) + + style.SQL_KEYWORD(' SET NOT NULL') + ';') + + + if f.spatial_index: + # Spatial indexes created the same way for both Geometry and + # Geography columns + if f.geography: + index_opts = '' + else: + index_opts = ' ' + style.SQL_KEYWORD(self.geom_index_opts) + output.append(style.SQL_KEYWORD('CREATE INDEX ') + + style.SQL_TABLE(qn('%s_%s_id' % (db_table, f.column))) + + style.SQL_KEYWORD(' ON ') + + style.SQL_TABLE(qn(db_table)) + + style.SQL_KEYWORD(' USING ') + + style.SQL_COLTYPE(self.geom_index_type) + ' ( ' + + style.SQL_FIELD(qn(f.column)) + index_opts + ' );') + return output + + def sql_table_creation_suffix(self): + qn = self.connection.ops.quote_name + return ' TEMPLATE %s' % qn(getattr(settings, 'POSTGIS_TEMPLATE', 'template_postgis')) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/introspection.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/postgis/introspection.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,95 @@ +from django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection +from django.contrib.gis.gdal import OGRGeomType + +class GeoIntrospectionError(Exception): + pass + +class PostGISIntrospection(DatabaseIntrospection): + # Reverse dictionary for PostGIS geometry types not populated until + # introspection is actually performed. + postgis_types_reverse = {} + + def get_postgis_types(self): + """ + Returns a dictionary with keys that are the PostgreSQL object + identification integers for the PostGIS geometry and/or + geography types (if supported). + """ + cursor = self.connection.cursor() + # The OID integers associated with the geometry type may + # be different across versions; hence, this is why we have + # to query the PostgreSQL pg_type table corresponding to the + # PostGIS custom data types. + oid_sql = 'SELECT "oid" FROM "pg_type" WHERE "typname" = %s' + try: + cursor.execute(oid_sql, ('geometry',)) + GEOM_TYPE = cursor.fetchone()[0] + postgis_types = { GEOM_TYPE : 'GeometryField' } + if self.connection.ops.geography: + cursor.execute(oid_sql, ('geography',)) + GEOG_TYPE = cursor.fetchone()[0] + # The value for the geography type is actually a tuple + # to pass in the `geography=True` keyword to the field + # definition. + postgis_types[GEOG_TYPE] = ('GeometryField', {'geography' : True}) + finally: + cursor.close() + + return postgis_types + + def get_field_type(self, data_type, description): + if not self.postgis_types_reverse: + # If the PostGIS types reverse dictionary is not populated, do so + # now. In order to prevent unnecessary requests upon connection + # intialization, the `data_types_reverse` dictionary is not updated + # with the PostGIS custom types until introspection is actually + # performed -- in other words, when this function is called. + self.postgis_types_reverse = self.get_postgis_types() + self.data_types_reverse.update(self.postgis_types_reverse) + return super(PostGISIntrospection, self).get_field_type(data_type, description) + + def get_geometry_type(self, table_name, geo_col): + """ + The geometry type OID used by PostGIS does not indicate the particular + type of field that a geometry column is (e.g., whether it's a + PointField or a PolygonField). Thus, this routine queries the PostGIS + metadata tables to determine the geometry type, + """ + cursor = self.connection.cursor() + try: + try: + # First seeing if this geometry column is in the `geometry_columns` + cursor.execute('SELECT "coord_dimension", "srid", "type" ' + 'FROM "geometry_columns" ' + 'WHERE "f_table_name"=%s AND "f_geometry_column"=%s', + (table_name, geo_col)) + row = cursor.fetchone() + if not row: raise GeoIntrospectionError + except GeoIntrospectionError: + if self.connection.ops.geography: + cursor.execute('SELECT "coord_dimension", "srid", "type" ' + 'FROM "geography_columns" ' + 'WHERE "f_table_name"=%s AND "f_geography_column"=%s', + (table_name, geo_col)) + row = cursor.fetchone() + + if not row: + raise Exception('Could not find a geometry or geography column for "%s"."%s"' % + (table_name, geo_col)) + + # OGRGeomType does not require GDAL and makes it easy to convert + # from OGC geom type name to Django field. + field_type = OGRGeomType(row[2]).django + + # Getting any GeometryField keyword arguments that are not the default. + dim = row[0] + srid = row[1] + field_params = {} + if srid != 4326: + field_params['srid'] = srid + if dim != 2: + field_params['dim'] = dim + finally: + cursor.close() + + return field_type, field_params diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/postgis/models.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,66 @@ +""" + The GeometryColumns and SpatialRefSys models for the PostGIS backend. +""" +from django.db import models +from django.contrib.gis.db.backends.base import SpatialRefSysMixin + +class GeometryColumns(models.Model): + """ + The 'geometry_columns' table from the PostGIS. See the PostGIS + documentation at Ch. 4.2.2. + """ + f_table_catalog = models.CharField(max_length=256) + f_table_schema = models.CharField(max_length=256) + f_table_name = models.CharField(max_length=256) + f_geometry_column = models.CharField(max_length=256) + coord_dimension = models.IntegerField() + srid = models.IntegerField(primary_key=True) + type = models.CharField(max_length=30) + + class Meta: + db_table = 'geometry_columns' + managed = False + + @classmethod + def table_name_col(cls): + """ + Returns the name of the metadata column used to store the + the feature table name. + """ + return 'f_table_name' + + @classmethod + def geom_col_name(cls): + """ + Returns the name of the metadata column used to store the + the feature geometry column. + """ + return 'f_geometry_column' + + def __unicode__(self): + return "%s.%s - %dD %s field (SRID: %d)" % \ + (self.f_table_name, self.f_geometry_column, + self.coord_dimension, self.type, self.srid) + +class SpatialRefSys(models.Model, SpatialRefSysMixin): + """ + The 'spatial_ref_sys' table from PostGIS. See the PostGIS + documentaiton at Ch. 4.2.1. + """ + srid = models.IntegerField(primary_key=True) + auth_name = models.CharField(max_length=256) + auth_srid = models.IntegerField() + srtext = models.CharField(max_length=2048) + proj4text = models.CharField(max_length=2048) + + class Meta: + db_table = 'spatial_ref_sys' + managed = False + + @property + def wkt(self): + return self.srtext + + @classmethod + def wkt_col(cls): + return 'srtext' diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/postgis/operations.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/postgis/operations.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,591 @@ +import re +from decimal import Decimal + +from django.conf import settings +from django.contrib.gis.db.backends.base import BaseSpatialOperations +from django.contrib.gis.db.backends.util import SpatialOperation, SpatialFunction +from django.contrib.gis.db.backends.postgis.adapter import PostGISAdapter +from django.contrib.gis.geometry.backend import Geometry +from django.contrib.gis.measure import Distance +from django.core.exceptions import ImproperlyConfigured +from django.db.backends.postgresql_psycopg2.base import DatabaseOperations +from django.db.utils import DatabaseError + +#### Classes used in constructing PostGIS spatial SQL #### +class PostGISOperator(SpatialOperation): + "For PostGIS operators (e.g. `&&`, `~`)." + def __init__(self, operator): + super(PostGISOperator, self).__init__(operator=operator) + +class PostGISFunction(SpatialFunction): + "For PostGIS function calls (e.g., `ST_Contains(table, geom)`)." + def __init__(self, prefix, function, **kwargs): + super(PostGISFunction, self).__init__(prefix + function, **kwargs) + +class PostGISFunctionParam(PostGISFunction): + "For PostGIS functions that take another parameter (e.g. DWithin, Relate)." + sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)' + +class PostGISDistance(PostGISFunction): + "For PostGIS distance operations." + dist_func = 'Distance' + sql_template = '%(function)s(%(geo_col)s, %(geometry)s) %(operator)s %%s' + + def __init__(self, prefix, operator): + super(PostGISDistance, self).__init__(prefix, self.dist_func, + operator=operator) + +class PostGISSpheroidDistance(PostGISFunction): + "For PostGIS spherical distance operations (using the spheroid)." + dist_func = 'distance_spheroid' + sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s) %(operator)s %%s' + def __init__(self, prefix, operator): + # An extra parameter in `end_subst` is needed for the spheroid string. + super(PostGISSpheroidDistance, self).__init__(prefix, self.dist_func, + operator=operator) + +class PostGISSphereDistance(PostGISDistance): + "For PostGIS spherical distance operations." + dist_func = 'distance_sphere' + +class PostGISRelate(PostGISFunctionParam): + "For PostGIS Relate(, ) calls." + pattern_regex = re.compile(r'^[012TF\*]{9}$') + def __init__(self, prefix, pattern): + if not self.pattern_regex.match(pattern): + raise ValueError('Invalid intersection matrix pattern "%s".' % pattern) + super(PostGISRelate, self).__init__(prefix, 'Relate') + + +class PostGISOperations(DatabaseOperations, BaseSpatialOperations): + compiler_module = 'django.contrib.gis.db.models.sql.compiler' + name = 'postgis' + postgis = True + version_regex = re.compile(r'^(?P\d)\.(?P\d)\.(?P\d+)') + valid_aggregates = dict([(k, None) for k in + ('Collect', 'Extent', 'Extent3D', 'MakeLine', 'Union')]) + + Adapter = PostGISAdapter + Adaptor = Adapter # Backwards-compatibility alias. + + def __init__(self, connection): + super(PostGISOperations, self).__init__(connection) + + # Trying to get the PostGIS version because the function + # signatures will depend on the version used. The cost + # here is a database query to determine the version, which + # can be mitigated by setting `POSTGIS_VERSION` with a 3-tuple + # comprising user-supplied values for the major, minor, and + # subminor revision of PostGIS. + try: + if hasattr(settings, 'POSTGIS_VERSION'): + vtup = settings.POSTGIS_VERSION + if len(vtup) == 3: + # The user-supplied PostGIS version. + version = vtup + else: + # This was the old documented way, but it's stupid to + # include the string. + version = vtup[1:4] + else: + vtup = self.postgis_version_tuple() + version = vtup[1:] + + # Getting the prefix -- even though we don't officially support + # PostGIS 1.2 anymore, keeping it anyway in case a prefix change + # for something else is necessary. + if version >= (1, 2, 2): + prefix = 'ST_' + else: + prefix = '' + + self.geom_func_prefix = prefix + self.spatial_version = version + except DatabaseError: + raise ImproperlyConfigured('Cannot determine PostGIS version for database "%s". ' + 'GeoDjango requires at least PostGIS version 1.3. ' + 'Was the database created from a spatial database ' + 'template?' % self.connection.settings_dict['NAME'] + ) + except Exception, e: + # TODO: Raise helpful exceptions as they become known. + raise + + # PostGIS-specific operators. The commented descriptions of these + # operators come from Section 7.6 of the PostGIS 1.4 documentation. + self.geometry_operators = { + # The "&<" operator returns true if A's bounding box overlaps or + # is to the left of B's bounding box. + 'overlaps_left' : PostGISOperator('&<'), + # The "&>" operator returns true if A's bounding box overlaps or + # is to the right of B's bounding box. + 'overlaps_right' : PostGISOperator('&>'), + # The "<<" operator returns true if A's bounding box is strictly + # to the left of B's bounding box. + 'left' : PostGISOperator('<<'), + # The ">>" operator returns true if A's bounding box is strictly + # to the right of B's bounding box. + 'right' : PostGISOperator('>>'), + # The "&<|" operator returns true if A's bounding box overlaps or + # is below B's bounding box. + 'overlaps_below' : PostGISOperator('&<|'), + # The "|&>" operator returns true if A's bounding box overlaps or + # is above B's bounding box. + 'overlaps_above' : PostGISOperator('|&>'), + # The "<<|" operator returns true if A's bounding box is strictly + # below B's bounding box. + 'strictly_below' : PostGISOperator('<<|'), + # The "|>>" operator returns true if A's bounding box is strictly + # above B's bounding box. + 'strictly_above' : PostGISOperator('|>>'), + # The "~=" operator is the "same as" operator. It tests actual + # geometric equality of two features. So if A and B are the same feature, + # vertex-by-vertex, the operator returns true. + 'same_as' : PostGISOperator('~='), + 'exact' : PostGISOperator('~='), + # The "@" operator returns true if A's bounding box is completely contained + # by B's bounding box. + 'contained' : PostGISOperator('@'), + # The "~" operator returns true if A's bounding box completely contains + # by B's bounding box. + 'bbcontains' : PostGISOperator('~'), + # The "&&" operator returns true if A's bounding box overlaps + # B's bounding box. + 'bboverlaps' : PostGISOperator('&&'), + } + + self.geometry_functions = { + 'equals' : PostGISFunction(prefix, 'Equals'), + 'disjoint' : PostGISFunction(prefix, 'Disjoint'), + 'touches' : PostGISFunction(prefix, 'Touches'), + 'crosses' : PostGISFunction(prefix, 'Crosses'), + 'within' : PostGISFunction(prefix, 'Within'), + 'overlaps' : PostGISFunction(prefix, 'Overlaps'), + 'contains' : PostGISFunction(prefix, 'Contains'), + 'intersects' : PostGISFunction(prefix, 'Intersects'), + 'relate' : (PostGISRelate, basestring), + } + + # Valid distance types and substitutions + dtypes = (Decimal, Distance, float, int, long) + def get_dist_ops(operator): + "Returns operations for both regular and spherical distances." + return {'cartesian' : PostGISDistance(prefix, operator), + 'sphere' : PostGISSphereDistance(prefix, operator), + 'spheroid' : PostGISSpheroidDistance(prefix, operator), + } + self.distance_functions = { + 'distance_gt' : (get_dist_ops('>'), dtypes), + 'distance_gte' : (get_dist_ops('>='), dtypes), + 'distance_lt' : (get_dist_ops('<'), dtypes), + 'distance_lte' : (get_dist_ops('<='), dtypes), + } + + # Versions 1.2.2+ have KML serialization support. + if version < (1, 2, 2): + ASKML = False + else: + ASKML = 'ST_AsKML' + self.geometry_functions.update( + {'coveredby' : PostGISFunction(prefix, 'CoveredBy'), + 'covers' : PostGISFunction(prefix, 'Covers'), + }) + self.distance_functions['dwithin'] = (PostGISFunctionParam(prefix, 'DWithin'), dtypes) + + # Adding the distance functions to the geometries lookup. + self.geometry_functions.update(self.distance_functions) + + # The union aggregate and topology operation use the same signature + # in versions 1.3+. + if version < (1, 3, 0): + UNIONAGG = 'GeomUnion' + UNION = 'Union' + MAKELINE = False + else: + UNIONAGG = 'ST_Union' + UNION = 'ST_Union' + MAKELINE = 'ST_MakeLine' + + # Only PostGIS versions 1.3.4+ have GeoJSON serialization support. + if version < (1, 3, 4): + GEOJSON = False + else: + GEOJSON = prefix + 'AsGeoJson' + + # ST_ContainsProperly ST_MakeLine, and ST_GeoHash added in 1.4. + if version >= (1, 4, 0): + GEOHASH = 'ST_GeoHash' + BOUNDINGCIRCLE = 'ST_MinimumBoundingCircle' + self.geometry_functions['contains_properly'] = PostGISFunction(prefix, 'ContainsProperly') + else: + GEOHASH, BOUNDINGCIRCLE = False, False + + # Geography type support added in 1.5. + if version >= (1, 5, 0): + self.geography = True + # Only a subset of the operators and functions are available + # for the geography type. + self.geography_functions = self.distance_functions.copy() + self.geography_functions.update({ + 'coveredby' : self.geometry_functions['coveredby'], + 'covers' : self.geometry_functions['covers'], + 'intersects' : self.geometry_functions['intersects'], + }) + self.geography_operators = { + 'bboverlaps' : PostGISOperator('&&'), + 'exact' : PostGISOperator('~='), + 'same_as' : PostGISOperator('~='), + } + + # Creating a dictionary lookup of all GIS terms for PostGIS. + gis_terms = ['isnull'] + gis_terms += self.geometry_operators.keys() + gis_terms += self.geometry_functions.keys() + self.gis_terms = dict([(term, None) for term in gis_terms]) + + self.area = prefix + 'Area' + self.bounding_circle = BOUNDINGCIRCLE + self.centroid = prefix + 'Centroid' + self.collect = prefix + 'Collect' + self.difference = prefix + 'Difference' + self.distance = prefix + 'Distance' + self.distance_sphere = prefix + 'distance_sphere' + self.distance_spheroid = prefix + 'distance_spheroid' + self.envelope = prefix + 'Envelope' + self.extent = prefix + 'Extent' + self.extent3d = prefix + 'Extent3D' + self.force_rhr = prefix + 'ForceRHR' + self.geohash = GEOHASH + self.geojson = GEOJSON + self.gml = prefix + 'AsGML' + self.intersection = prefix + 'Intersection' + self.kml = ASKML + self.length = prefix + 'Length' + self.length3d = prefix + 'Length3D' + self.length_spheroid = prefix + 'length_spheroid' + self.makeline = MAKELINE + self.mem_size = prefix + 'mem_size' + self.num_geom = prefix + 'NumGeometries' + self.num_points =prefix + 'npoints' + self.perimeter = prefix + 'Perimeter' + self.perimeter3d = prefix + 'Perimeter3D' + self.point_on_surface = prefix + 'PointOnSurface' + self.polygonize = prefix + 'Polygonize' + self.reverse = prefix + 'Reverse' + self.scale = prefix + 'Scale' + self.snap_to_grid = prefix + 'SnapToGrid' + self.svg = prefix + 'AsSVG' + self.sym_difference = prefix + 'SymDifference' + self.transform = prefix + 'Transform' + self.translate = prefix + 'Translate' + self.union = UNION + self.unionagg = UNIONAGG + + def check_aggregate_support(self, aggregate): + """ + Checks if the given aggregate name is supported (that is, if it's + in `self.valid_aggregates`). + """ + agg_name = aggregate.__class__.__name__ + return agg_name in self.valid_aggregates + + def convert_extent(self, box): + """ + Returns a 4-tuple extent for the `Extent` aggregate by converting + the bounding box text returned by PostGIS (`box` argument), for + example: "BOX(-90.0 30.0, -85.0 40.0)". + """ + ll, ur = box[4:-1].split(',') + xmin, ymin = map(float, ll.split()) + xmax, ymax = map(float, ur.split()) + return (xmin, ymin, xmax, ymax) + + def convert_extent3d(self, box3d): + """ + Returns a 6-tuple extent for the `Extent3D` aggregate by converting + the 3d bounding-box text returnded by PostGIS (`box3d` argument), for + example: "BOX3D(-90.0 30.0 1, -85.0 40.0 2)". + """ + ll, ur = box3d[6:-1].split(',') + xmin, ymin, zmin = map(float, ll.split()) + xmax, ymax, zmax = map(float, ur.split()) + return (xmin, ymin, zmin, xmax, ymax, zmax) + + def convert_geom(self, hex, geo_field): + """ + Converts the geometry returned from PostGIS aggretates. + """ + if hex: + return Geometry(hex) + else: + return None + + def geo_db_type(self, f): + """ + Return the database field type for the given geometry field. + Typically this is `None` because geometry columns are added via + the `AddGeometryColumn` stored procedure, unless the field + has been specified to be of geography type instead. + """ + if f.geography: + if not self.geography: + raise NotImplementedError('PostGIS 1.5 required for geography column support.') + + if f.srid != 4326: + raise NotImplementedError('PostGIS 1.5 supports geography columns ' + 'only with an SRID of 4326.') + + return 'geography(%s,%d)'% (f.geom_type, f.srid) + else: + return None + + def get_distance(self, f, dist_val, lookup_type): + """ + Retrieve the distance parameters for the given geometry field, + distance lookup value, and the distance lookup type. + + This is the most complex implementation of the spatial backends due to + what is supported on geodetic geometry columns vs. what's available on + projected geometry columns. In addition, it has to take into account + the newly introduced geography column type introudced in PostGIS 1.5. + """ + # Getting the distance parameter and any options. + if len(dist_val) == 1: + value, option = dist_val[0], None + else: + value, option = dist_val + + # Shorthand boolean flags. + geodetic = f.geodetic(self.connection) + geography = f.geography and self.geography + + if isinstance(value, Distance): + if geography: + dist_param = value.m + elif geodetic: + if lookup_type == 'dwithin': + raise ValueError('Only numeric values of degree units are ' + 'allowed on geographic DWithin queries.') + dist_param = value.m + else: + dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection))) + else: + # Assuming the distance is in the units of the field. + dist_param = value + + if (not geography and geodetic and lookup_type != 'dwithin' + and option == 'spheroid'): + # using distance_spheroid requires the spheroid of the field as + # a parameter. + return [f._spheroid, dist_param] + else: + return [dist_param] + + def get_geom_placeholder(self, f, value): + """ + Provides a proper substitution value for Geometries that are not in the + SRID of the field. Specifically, this routine will substitute in the + ST_Transform() function call. + """ + if value is None or value.srid == f.srid: + placeholder = '%s' + else: + # Adding Transform() to the SQL placeholder. + placeholder = '%s(%%s, %s)' % (self.transform, f.srid) + + if hasattr(value, 'expression'): + # If this is an F expression, then we don't really want + # a placeholder and instead substitute in the column + # of the expression. + placeholder = placeholder % '%s.%s' % tuple(map(self.quote_name, value.cols[value.expression])) + + return placeholder + + def _get_postgis_func(self, func): + """ + Helper routine for calling PostGIS functions and returning their result. + """ + cursor = self.connection._cursor() + try: + try: + cursor.execute('SELECT %s()' % func) + row = cursor.fetchone() + except: + # Responsibility of callers to perform error handling. + raise + finally: + # Close out the connection. See #9437. + self.connection.close() + return row[0] + + def postgis_geos_version(self): + "Returns the version of the GEOS library used with PostGIS." + return self._get_postgis_func('postgis_geos_version') + + def postgis_lib_version(self): + "Returns the version number of the PostGIS library used with PostgreSQL." + return self._get_postgis_func('postgis_lib_version') + + def postgis_proj_version(self): + "Returns the version of the PROJ.4 library used with PostGIS." + return self._get_postgis_func('postgis_proj_version') + + def postgis_version(self): + "Returns PostGIS version number and compile-time options." + return self._get_postgis_func('postgis_version') + + def postgis_full_version(self): + "Returns PostGIS version number and compile-time options." + return self._get_postgis_func('postgis_full_version') + + def postgis_version_tuple(self): + """ + Returns the PostGIS version as a tuple (version string, major, + minor, subminor). + """ + # Getting the PostGIS version + version = self.postgis_lib_version() + m = self.version_regex.match(version) + + if m: + major = int(m.group('major')) + minor1 = int(m.group('minor1')) + minor2 = int(m.group('minor2')) + else: + raise Exception('Could not parse PostGIS version string: %s' % version) + + return (version, major, minor1, minor2) + + def proj_version_tuple(self): + """ + Return the version of PROJ.4 used by PostGIS as a tuple of the + major, minor, and subminor release numbers. + """ + proj_regex = re.compile(r'(\d+)\.(\d+)\.(\d+)') + proj_ver_str = self.postgis_proj_version() + m = proj_regex.search(proj_ver_str) + if m: + return tuple(map(int, [m.group(1), m.group(2), m.group(3)])) + else: + raise Exception('Could not determine PROJ.4 version from PostGIS.') + + def num_params(self, lookup_type, num_param): + """ + Helper routine that returns a boolean indicating whether the number of + parameters is correct for the lookup type. + """ + def exactly_two(np): return np == 2 + def two_to_three(np): return np >= 2 and np <=3 + if (lookup_type in self.distance_functions and + lookup_type != 'dwithin'): + return two_to_three(num_param) + else: + return exactly_two(num_param) + + def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn): + """ + Constructs spatial SQL from the given lookup value tuple a + (alias, col, db_type), the lookup type string, lookup value, and + the geometry field. + """ + alias, col, db_type = lvalue + + # Getting the quoted geometry column. + geo_col = '%s.%s' % (qn(alias), qn(col)) + + if lookup_type in self.geometry_operators: + if field.geography and not lookup_type in self.geography_operators: + raise ValueError('PostGIS geography does not support the ' + '"%s" lookup.' % lookup_type) + # Handling a PostGIS operator. + op = self.geometry_operators[lookup_type] + return op.as_sql(geo_col, self.get_geom_placeholder(field, value)) + elif lookup_type in self.geometry_functions: + if field.geography and not lookup_type in self.geography_functions: + raise ValueError('PostGIS geography type does not support the ' + '"%s" lookup.' % lookup_type) + + # See if a PostGIS geometry function matches the lookup type. + tmp = self.geometry_functions[lookup_type] + + # Lookup types that are tuples take tuple arguments, e.g., 'relate' and + # distance lookups. + if isinstance(tmp, tuple): + # First element of tuple is the PostGISOperation instance, and the + # second element is either the type or a tuple of acceptable types + # that may passed in as further parameters for the lookup type. + op, arg_type = tmp + + # Ensuring that a tuple _value_ was passed in from the user + if not isinstance(value, (tuple, list)): + raise ValueError('Tuple required for `%s` lookup type.' % lookup_type) + + # Geometry is first element of lookup tuple. + geom = value[0] + + # Number of valid tuple parameters depends on the lookup type. + nparams = len(value) + if not self.num_params(lookup_type, nparams): + raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type) + + # Ensuring the argument type matches what we expect. + if not isinstance(value[1], arg_type): + raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1]))) + + # For lookup type `relate`, the op instance is not yet created (has + # to be instantiated here to check the pattern parameter). + if lookup_type == 'relate': + op = op(self.geom_func_prefix, value[1]) + elif lookup_type in self.distance_functions and lookup_type != 'dwithin': + if not field.geography and field.geodetic(self.connection): + # Geodetic distances are only availble from Points to + # PointFields on PostGIS 1.4 and below. + if not self.connection.ops.geography: + if field.geom_type != 'POINT': + raise ValueError('PostGIS spherical operations are only valid on PointFields.') + + if str(geom.geom_type) != 'Point': + raise ValueError('PostGIS geometry distance parameter is required to be of type Point.') + + # Setting up the geodetic operation appropriately. + if nparams == 3 and value[2] == 'spheroid': + op = op['spheroid'] + else: + op = op['sphere'] + else: + op = op['cartesian'] + else: + op = tmp + geom = value + + # Calling the `as_sql` function on the operation instance. + return op.as_sql(geo_col, self.get_geom_placeholder(field, geom)) + + elif lookup_type == 'isnull': + # Handling 'isnull' lookup type + return "%s IS %sNULL" % (geo_col, (not value and 'NOT ' or '')) + + raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) + + def spatial_aggregate_sql(self, agg): + """ + Returns the spatial aggregate SQL template and function for the + given Aggregate instance. + """ + agg_name = agg.__class__.__name__ + if not self.check_aggregate_support(agg): + raise NotImplementedError('%s spatial aggregate is not implmented for this backend.' % agg_name) + agg_name = agg_name.lower() + if agg_name == 'union': agg_name += 'agg' + sql_template = '%(function)s(%(field)s)' + sql_function = getattr(self, agg_name) + return sql_template, sql_function + + # Routines for getting the OGC-compliant models. + def geometry_columns(self): + from django.contrib.gis.db.backends.postgis.models import GeometryColumns + return GeometryColumns + + def spatial_ref_sys(self): + from django.contrib.gis.db.backends.postgis.models import SpatialRefSys + return SpatialRefSys diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/adapter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/adapter.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,8 @@ +from django.db.backends.sqlite3.base import Database +from django.contrib.gis.db.backends.adapter import WKTAdapter + +class SpatiaLiteAdapter(WKTAdapter): + "SQLite adaptor for geometry objects." + def __conform__(self, protocol): + if protocol is Database.PrepareProtocol: + return str(self) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/base.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/base.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,77 @@ +from ctypes.util import find_library +from django.conf import settings + +from django.core.exceptions import ImproperlyConfigured +from django.db.backends.sqlite3.base import * +from django.db.backends.sqlite3.base import DatabaseWrapper as SqliteDatabaseWrapper, \ + _sqlite_extract, _sqlite_date_trunc, _sqlite_regexp +from django.contrib.gis.db.backends.spatialite.client import SpatiaLiteClient +from django.contrib.gis.db.backends.spatialite.creation import SpatiaLiteCreation +from django.contrib.gis.db.backends.spatialite.introspection import SpatiaLiteIntrospection +from django.contrib.gis.db.backends.spatialite.operations import SpatiaLiteOperations + +class DatabaseWrapper(SqliteDatabaseWrapper): + def __init__(self, *args, **kwargs): + # Before we get too far, make sure pysqlite 2.5+ is installed. + if Database.version_info < (2, 5, 0): + raise ImproperlyConfigured('Only versions of pysqlite 2.5+ are ' + 'compatible with SpatiaLite and GeoDjango.') + + # Trying to find the location of the SpatiaLite library. + # Here we are figuring out the path to the SpatiaLite library + # (`libspatialite`). If it's not in the system library path (e.g., it + # cannot be found by `ctypes.util.find_library`), then it may be set + # manually in the settings via the `SPATIALITE_LIBRARY_PATH` setting. + self.spatialite_lib = getattr(settings, 'SPATIALITE_LIBRARY_PATH', + find_library('spatialite')) + if not self.spatialite_lib: + raise ImproperlyConfigured('Unable to locate the SpatiaLite library. ' + 'Make sure it is in your library path, or set ' + 'SPATIALITE_LIBRARY_PATH in your settings.' + ) + super(DatabaseWrapper, self).__init__(*args, **kwargs) + self.ops = SpatiaLiteOperations(self) + self.client = SpatiaLiteClient(self) + self.creation = SpatiaLiteCreation(self) + self.introspection = SpatiaLiteIntrospection(self) + + def _cursor(self): + if self.connection is None: + ## The following is the same as in django.db.backends.sqlite3.base ## + settings_dict = self.settings_dict + if not settings_dict['NAME']: + raise ImproperlyConfigured("Please fill out the database NAME in the settings module before using the database.") + kwargs = { + 'database': settings_dict['NAME'], + 'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES, + } + kwargs.update(settings_dict['OPTIONS']) + self.connection = Database.connect(**kwargs) + # Register extract, date_trunc, and regexp functions. + self.connection.create_function("django_extract", 2, _sqlite_extract) + self.connection.create_function("django_date_trunc", 2, _sqlite_date_trunc) + self.connection.create_function("regexp", 2, _sqlite_regexp) + connection_created.send(sender=self.__class__) + + ## From here on, customized for GeoDjango ## + + # Enabling extension loading on the SQLite connection. + try: + self.connection.enable_load_extension(True) + except AttributeError: + raise ImproperlyConfigured('The pysqlite library does not support C extension loading. ' + 'Both SQLite and pysqlite must be configured to allow ' + 'the loading of extensions to use SpatiaLite.' + ) + + # Loading the SpatiaLite library extension on the connection, and returning + # the created cursor. + cur = self.connection.cursor(factory=SQLiteCursorWrapper) + try: + cur.execute("SELECT load_extension(%s)", (self.spatialite_lib,)) + except Exception, msg: + raise ImproperlyConfigured('Unable to load the SpatiaLite library extension ' + '"%s" because: %s' % (self.spatialite_lib, msg)) + return cur + else: + return self.connection.cursor(factory=SQLiteCursorWrapper) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/client.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/client.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,5 @@ +from django.db.backends.sqlite3.client import DatabaseClient + +class SpatiaLiteClient(DatabaseClient): + executable_name = 'spatialite' + diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/creation.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/creation.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,96 @@ +import os +from django.conf import settings +from django.core.exceptions import ImproperlyConfigured +from django.core.management import call_command +from django.db.backends.sqlite3.creation import DatabaseCreation + +class SpatiaLiteCreation(DatabaseCreation): + + def create_test_db(self, verbosity=1, autoclobber=False): + """ + Creates a test database, prompting the user for confirmation if the + database already exists. Returns the name of the test database created. + + This method is overloaded to load up the SpatiaLite initialization + SQL prior to calling the `syncdb` command. + """ + if verbosity >= 1: + print "Creating test database '%s'..." % self.connection.alias + + test_database_name = self._create_test_db(verbosity, autoclobber) + + self.connection.close() + + self.connection.settings_dict["NAME"] = test_database_name + can_rollback = self._rollback_works() + self.connection.settings_dict["SUPPORTS_TRANSACTIONS"] = can_rollback + # Need to load the SpatiaLite initialization SQL before running `syncdb`. + self.load_spatialite_sql() + call_command('syncdb', verbosity=verbosity, interactive=False, database=self.connection.alias) + + if settings.CACHE_BACKEND.startswith('db://'): + from django.core.cache import parse_backend_uri + _, cache_name, _ = parse_backend_uri(settings.CACHE_BACKEND) + call_command('createcachetable', cache_name) + + # Get a cursor (even though we don't need one yet). This has + # the side effect of initializing the test database. + cursor = self.connection.cursor() + + return test_database_name + + def sql_indexes_for_field(self, model, f, style): + "Return any spatial index creation SQL for the field." + from django.contrib.gis.db.models.fields import GeometryField + + output = super(SpatiaLiteCreation, self).sql_indexes_for_field(model, f, style) + + if isinstance(f, GeometryField): + gqn = self.connection.ops.geo_quote_name + qn = self.connection.ops.quote_name + db_table = model._meta.db_table + + output.append(style.SQL_KEYWORD('SELECT ') + + style.SQL_TABLE('AddGeometryColumn') + '(' + + style.SQL_TABLE(gqn(db_table)) + ', ' + + style.SQL_FIELD(gqn(f.column)) + ', ' + + style.SQL_FIELD(str(f.srid)) + ', ' + + style.SQL_COLTYPE(gqn(f.geom_type)) + ', ' + + style.SQL_KEYWORD(str(f.dim)) + ', ' + + style.SQL_KEYWORD(str(int(not f.null))) + + ');') + + if f.spatial_index: + output.append(style.SQL_KEYWORD('SELECT ') + + style.SQL_TABLE('CreateSpatialIndex') + '(' + + style.SQL_TABLE(gqn(db_table)) + ', ' + + style.SQL_FIELD(gqn(f.column)) + ');') + + return output + + def load_spatialite_sql(self): + """ + This routine loads up the SpatiaLite SQL file. + """ + # Getting the location of the SpatiaLite SQL file, and confirming + # it exists. + spatialite_sql = self.spatialite_init_file() + if not os.path.isfile(spatialite_sql): + raise ImproperlyConfigured('Could not find the required SpatiaLite initialization ' + 'SQL file (necessary for testing): %s' % spatialite_sql) + + # Opening up the SpatiaLite SQL initialization file and executing + # as a script. + sql_fh = open(spatialite_sql, 'r') + try: + cur = self.connection._cursor() + cur.executescript(sql_fh.read()) + finally: + sql_fh.close() + + def spatialite_init_file(self): + # SPATIALITE_SQL may be placed in settings to tell GeoDjango + # to use a specific path to the SpatiaLite initilization SQL. + return getattr(settings, 'SPATIALITE_SQL', + 'init_spatialite-%s.%s.sql' % + self.connection.ops.spatial_version[:2]) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/introspection.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/introspection.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,51 @@ +from django.contrib.gis.gdal import OGRGeomType +from django.db.backends.sqlite3.introspection import DatabaseIntrospection, FlexibleFieldLookupDict + +class GeoFlexibleFieldLookupDict(FlexibleFieldLookupDict): + """ + Sublcass that includes updates the `base_data_types_reverse` dict + for geometry field types. + """ + base_data_types_reverse = FlexibleFieldLookupDict.base_data_types_reverse.copy() + base_data_types_reverse.update( + {'point' : 'GeometryField', + 'linestring' : 'GeometryField', + 'polygon' : 'GeometryField', + 'multipoint' : 'GeometryField', + 'multilinestring' : 'GeometryField', + 'multipolygon' : 'GeometryField', + 'geometrycollection' : 'GeometryField', + }) + +class SpatiaLiteIntrospection(DatabaseIntrospection): + data_types_reverse = GeoFlexibleFieldLookupDict() + + def get_geometry_type(self, table_name, geo_col): + cursor = self.connection.cursor() + try: + # Querying the `geometry_columns` table to get additional metadata. + cursor.execute('SELECT "coord_dimension", "srid", "type" ' + 'FROM "geometry_columns" ' + 'WHERE "f_table_name"=%s AND "f_geometry_column"=%s', + (table_name, geo_col)) + row = cursor.fetchone() + if not row: + raise Exception('Could not find a geometry column for "%s"."%s"' % + (table_name, geo_col)) + + # OGRGeomType does not require GDAL and makes it easy to convert + # from OGC geom type name to Django field. + field_type = OGRGeomType(row[2]).django + + # Getting any GeometryField keyword arguments that are not the default. + dim = row[0] + srid = row[1] + field_params = {} + if srid != 4326: + field_params['srid'] = srid + if isinstance(dim, basestring) and 'Z' in dim: + field_params['dim'] = 3 + finally: + cursor.close() + + return field_type, field_params diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/models.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,60 @@ +""" + The GeometryColumns and SpatialRefSys models for the SpatiaLite backend. +""" +from django.db import models +from django.contrib.gis.db.backends.base import SpatialRefSysMixin + +class GeometryColumns(models.Model): + """ + The 'geometry_columns' table from SpatiaLite. + """ + f_table_name = models.CharField(max_length=256) + f_geometry_column = models.CharField(max_length=256) + type = models.CharField(max_length=30) + coord_dimension = models.IntegerField() + srid = models.IntegerField(primary_key=True) + spatial_index_enabled = models.IntegerField() + + class Meta: + db_table = 'geometry_columns' + managed = False + + @classmethod + def table_name_col(cls): + """ + Returns the name of the metadata column used to store the + the feature table name. + """ + return 'f_table_name' + + @classmethod + def geom_col_name(cls): + """ + Returns the name of the metadata column used to store the + the feature geometry column. + """ + return 'f_geometry_column' + + def __unicode__(self): + return "%s.%s - %dD %s field (SRID: %d)" % \ + (self.f_table_name, self.f_geometry_column, + self.coord_dimension, self.type, self.srid) + +class SpatialRefSys(models.Model, SpatialRefSysMixin): + """ + The 'spatial_ref_sys' table from SpatiaLite. + """ + srid = models.IntegerField(primary_key=True) + auth_name = models.CharField(max_length=256) + auth_srid = models.IntegerField() + ref_sys_name = models.CharField(max_length=256) + proj4text = models.CharField(max_length=2048) + + @property + def wkt(self): + from django.contrib.gis.gdal import SpatialReference + return SpatialReference(self.proj4text).wkt + + class Meta: + db_table = 'spatial_ref_sys' + managed = False diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/spatialite/operations.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/spatialite/operations.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,343 @@ +import re +from decimal import Decimal + +from django.contrib.gis.db.backends.base import BaseSpatialOperations +from django.contrib.gis.db.backends.util import SpatialOperation, SpatialFunction +from django.contrib.gis.db.backends.spatialite.adapter import SpatiaLiteAdapter +from django.contrib.gis.geometry.backend import Geometry +from django.contrib.gis.measure import Distance +from django.core.exceptions import ImproperlyConfigured +from django.db.backends.sqlite3.base import DatabaseOperations +from django.db.utils import DatabaseError + +class SpatiaLiteOperator(SpatialOperation): + "For SpatiaLite operators (e.g. `&&`, `~`)." + def __init__(self, operator): + super(SpatiaLiteOperator, self).__init__(operator=operator) + +class SpatiaLiteFunction(SpatialFunction): + "For SpatiaLite function calls." + def __init__(self, function, **kwargs): + super(SpatiaLiteFunction, self).__init__(function, **kwargs) + +class SpatiaLiteFunctionParam(SpatiaLiteFunction): + "For SpatiaLite functions that take another parameter." + sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)' + +class SpatiaLiteDistance(SpatiaLiteFunction): + "For SpatiaLite distance operations." + dist_func = 'Distance' + sql_template = '%(function)s(%(geo_col)s, %(geometry)s) %(operator)s %%s' + + def __init__(self, operator): + super(SpatiaLiteDistance, self).__init__(self.dist_func, + operator=operator) + +class SpatiaLiteRelate(SpatiaLiteFunctionParam): + "For SpatiaLite Relate(, ) calls." + pattern_regex = re.compile(r'^[012TF\*]{9}$') + def __init__(self, pattern): + if not self.pattern_regex.match(pattern): + raise ValueError('Invalid intersection matrix pattern "%s".' % pattern) + super(SpatiaLiteRelate, self).__init__('Relate') + +# Valid distance types and substitutions +dtypes = (Decimal, Distance, float, int, long) +def get_dist_ops(operator): + "Returns operations for regular distances; spherical distances are not currently supported." + return (SpatiaLiteDistance(operator),) + +class SpatiaLiteOperations(DatabaseOperations, BaseSpatialOperations): + compiler_module = 'django.contrib.gis.db.models.sql.compiler' + name = 'spatialite' + spatialite = True + version_regex = re.compile(r'^(?P\d)\.(?P\d)\.(?P\d+)') + valid_aggregates = dict([(k, None) for k in ('Extent', 'Union')]) + + Adapter = SpatiaLiteAdapter + Adaptor = Adapter # Backwards-compatibility alias. + + area = 'Area' + centroid = 'Centroid' + contained = 'MbrWithin' + difference = 'Difference' + distance = 'Distance' + envelope = 'Envelope' + intersection = 'Intersection' + length = 'GLength' # OpenGis defines Length, but this conflicts with an SQLite reserved keyword + num_geom = 'NumGeometries' + num_points = 'NumPoints' + point_on_surface = 'PointOnSurface' + scale = 'ScaleCoords' + svg = 'AsSVG' + sym_difference = 'SymDifference' + transform = 'Transform' + translate = 'ShiftCoords' + union = 'GUnion' # OpenGis defines Union, but this conflicts with an SQLite reserved keyword + unionagg = 'GUnion' + + from_text = 'GeomFromText' + from_wkb = 'GeomFromWKB' + select = 'AsText(%s)' + + geometry_functions = { + 'equals' : SpatiaLiteFunction('Equals'), + 'disjoint' : SpatiaLiteFunction('Disjoint'), + 'touches' : SpatiaLiteFunction('Touches'), + 'crosses' : SpatiaLiteFunction('Crosses'), + 'within' : SpatiaLiteFunction('Within'), + 'overlaps' : SpatiaLiteFunction('Overlaps'), + 'contains' : SpatiaLiteFunction('Contains'), + 'intersects' : SpatiaLiteFunction('Intersects'), + 'relate' : (SpatiaLiteRelate, basestring), + # Retruns true if B's bounding box completely contains A's bounding box. + 'contained' : SpatiaLiteFunction('MbrWithin'), + # Returns true if A's bounding box completely contains B's bounding box. + 'bbcontains' : SpatiaLiteFunction('MbrContains'), + # Returns true if A's bounding box overlaps B's bounding box. + 'bboverlaps' : SpatiaLiteFunction('MbrOverlaps'), + # These are implemented here as synonyms for Equals + 'same_as' : SpatiaLiteFunction('Equals'), + 'exact' : SpatiaLiteFunction('Equals'), + } + + distance_functions = { + 'distance_gt' : (get_dist_ops('>'), dtypes), + 'distance_gte' : (get_dist_ops('>='), dtypes), + 'distance_lt' : (get_dist_ops('<'), dtypes), + 'distance_lte' : (get_dist_ops('<='), dtypes), + } + geometry_functions.update(distance_functions) + + def __init__(self, connection): + super(DatabaseOperations, self).__init__() + self.connection = connection + + # Determine the version of the SpatiaLite library. + try: + vtup = self.spatialite_version_tuple() + version = vtup[1:] + if version < (2, 3, 0): + raise ImproperlyConfigured('GeoDjango only supports SpatiaLite versions ' + '2.3.0 and above') + self.spatial_version = version + except ImproperlyConfigured: + raise + except Exception, msg: + raise ImproperlyConfigured('Cannot determine the SpatiaLite version for the "%s" ' + 'database (error was "%s"). Was the SpatiaLite initialization ' + 'SQL loaded on this database?' % + (self.connection.settings_dict['NAME'], msg)) + + # Creating the GIS terms dictionary. + gis_terms = ['isnull'] + gis_terms += self.geometry_functions.keys() + self.gis_terms = dict([(term, None) for term in gis_terms]) + + def check_aggregate_support(self, aggregate): + """ + Checks if the given aggregate name is supported (that is, if it's + in `self.valid_aggregates`). + """ + agg_name = aggregate.__class__.__name__ + return agg_name in self.valid_aggregates + + def convert_geom(self, wkt, geo_field): + """ + Converts geometry WKT returned from a SpatiaLite aggregate. + """ + if wkt: + return Geometry(wkt, geo_field.srid) + else: + return None + + def geo_db_type(self, f): + """ + Returns None because geometry columnas are added via the + `AddGeometryColumn` stored procedure on SpatiaLite. + """ + return None + + def get_distance(self, f, value, lookup_type): + """ + Returns the distance parameters for the given geometry field, + lookup value, and lookup type. SpatiaLite only supports regular + cartesian-based queries (no spheroid/sphere calculations for point + geometries like PostGIS). + """ + if not value: + return [] + value = value[0] + if isinstance(value, Distance): + if f.geodetic(self.connection): + raise ValueError('SpatiaLite does not support distance queries on ' + 'geometry fields with a geodetic coordinate system. ' + 'Distance objects; use a numeric value of your ' + 'distance in degrees instead.') + else: + dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection))) + else: + dist_param = value + return [dist_param] + + def get_geom_placeholder(self, f, value): + """ + Provides a proper substitution value for Geometries that are not in the + SRID of the field. Specifically, this routine will substitute in the + Transform() and GeomFromText() function call(s). + """ + def transform_value(value, srid): + return not (value is None or value.srid == srid) + if hasattr(value, 'expression'): + if transform_value(value, f.srid): + placeholder = '%s(%%s, %s)' % (self.transform, f.srid) + else: + placeholder = '%s' + # No geometry value used for F expression, substitue in + # the column name instead. + return placeholder % '%s.%s' % tuple(map(self.quote_name, value.cols[value.expression])) + else: + if transform_value(value, f.srid): + # Adding Transform() to the SQL placeholder. + return '%s(%s(%%s,%s), %s)' % (self.transform, self.from_text, value.srid, f.srid) + else: + return '%s(%%s,%s)' % (self.from_text, f.srid) + + def _get_spatialite_func(self, func): + """ + Helper routine for calling SpatiaLite functions and returning + their result. + """ + cursor = self.connection._cursor() + try: + try: + cursor.execute('SELECT %s' % func) + row = cursor.fetchone() + except: + # Responsibility of caller to perform error handling. + raise + finally: + cursor.close() + return row[0] + + def geos_version(self): + "Returns the version of GEOS used by SpatiaLite as a string." + return self._get_spatialite_func('geos_version()') + + def proj4_version(self): + "Returns the version of the PROJ.4 library used by SpatiaLite." + return self._get_spatialite_func('proj4_version()') + + def spatialite_version(self): + "Returns the SpatiaLite library version as a string." + return self._get_spatialite_func('spatialite_version()') + + def spatialite_version_tuple(self): + """ + Returns the SpatiaLite version as a tuple (version string, major, + minor, subminor). + """ + # Getting the SpatiaLite version. + try: + version = self.spatialite_version() + except DatabaseError: + # The `spatialite_version` function first appeared in version 2.3.1 + # of SpatiaLite, so doing a fallback test for 2.3.0 (which is + # used by popular Debian/Ubuntu packages). + version = None + try: + tmp = self._get_spatialite_func("X(GeomFromText('POINT(1 1)'))") + if tmp == 1.0: version = '2.3.0' + except DatabaseError: + pass + # If no version string defined, then just re-raise the original + # exception. + if version is None: raise + + m = self.version_regex.match(version) + if m: + major = int(m.group('major')) + minor1 = int(m.group('minor1')) + minor2 = int(m.group('minor2')) + else: + raise Exception('Could not parse SpatiaLite version string: %s' % version) + + return (version, major, minor1, minor2) + + def spatial_aggregate_sql(self, agg): + """ + Returns the spatial aggregate SQL template and function for the + given Aggregate instance. + """ + agg_name = agg.__class__.__name__ + if not self.check_aggregate_support(agg): + raise NotImplementedError('%s spatial aggregate is not implmented for this backend.' % agg_name) + agg_name = agg_name.lower() + if agg_name == 'union': agg_name += 'agg' + sql_template = self.select % '%(function)s(%(field)s)' + sql_function = getattr(self, agg_name) + return sql_template, sql_function + + def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn): + """ + Returns the SpatiaLite-specific SQL for the given lookup value + [a tuple of (alias, column, db_type)], lookup type, lookup + value, the model field, and the quoting function. + """ + alias, col, db_type = lvalue + + # Getting the quoted field as `geo_col`. + geo_col = '%s.%s' % (qn(alias), qn(col)) + + if lookup_type in self.geometry_functions: + # See if a SpatiaLite geometry function matches the lookup type. + tmp = self.geometry_functions[lookup_type] + + # Lookup types that are tuples take tuple arguments, e.g., 'relate' and + # distance lookups. + if isinstance(tmp, tuple): + # First element of tuple is the SpatiaLiteOperation instance, and the + # second element is either the type or a tuple of acceptable types + # that may passed in as further parameters for the lookup type. + op, arg_type = tmp + + # Ensuring that a tuple _value_ was passed in from the user + if not isinstance(value, (tuple, list)): + raise ValueError('Tuple required for `%s` lookup type.' % lookup_type) + + # Geometry is first element of lookup tuple. + geom = value[0] + + # Number of valid tuple parameters depends on the lookup type. + if len(value) != 2: + raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type) + + # Ensuring the argument type matches what we expect. + if not isinstance(value[1], arg_type): + raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1]))) + + # For lookup type `relate`, the op instance is not yet created (has + # to be instantiated here to check the pattern parameter). + if lookup_type == 'relate': + op = op(value[1]) + elif lookup_type in self.distance_functions: + op = op[0] + else: + op = tmp + geom = value + # Calling the `as_sql` function on the operation instance. + return op.as_sql(geo_col, self.get_geom_placeholder(field, geom)) + elif lookup_type == 'isnull': + # Handling 'isnull' lookup type + return "%s IS %sNULL" % (geo_col, (not value and 'NOT ' or '')) + + raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type)) + + # Routines for getting the OGC-compliant models. + def geometry_columns(self): + from django.contrib.gis.db.backends.spatialite.models import GeometryColumns + return GeometryColumns + + def spatial_ref_sys(self): + from django.contrib.gis.db.backends.spatialite.models import SpatialRefSys + return SpatialRefSys diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/backends/util.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/backends/util.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,70 @@ +""" +A collection of utility routines and classes used by the spatial +backends. +""" + +def getstatusoutput(cmd): + """ + Executes a shell command on the platform using subprocess.Popen and + return a tuple of the status and stdout output. + """ + from subprocess import Popen, PIPE + # Set stdout and stderr to PIPE because we want to capture stdout and + # prevent stderr from displaying. + p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE) + # We use p.communicate() instead of p.wait() to avoid deadlocks if the + # output buffers exceed POSIX buffer size. + stdout, stderr = p.communicate() + return p.returncode, stdout.strip() + +def gqn(val): + """ + The geographic quote name function; used for quoting tables and + geometries (they use single rather than the double quotes of the + backend quotename function). + """ + if isinstance(val, basestring): + if isinstance(val, unicode): val = val.encode('ascii') + return "'%s'" % val + else: + return str(val) + +class SpatialOperation(object): + """ + Base class for generating spatial SQL. + """ + sql_template = '%(geo_col)s %(operator)s %(geometry)s' + + def __init__(self, function='', operator='', result='', **kwargs): + self.function = function + self.operator = operator + self.result = result + self.extra = kwargs + + def as_sql(self, geo_col, geometry='%s'): + return self.sql_template % self.params(geo_col, geometry) + + def params(self, geo_col, geometry): + params = {'function' : self.function, + 'geo_col' : geo_col, + 'geometry' : geometry, + 'operator' : self.operator, + 'result' : self.result, + } + params.update(self.extra) + return params + +class SpatialFunction(SpatialOperation): + """ + Base class for generating spatial SQL related to a function. + """ + sql_template = '%(function)s(%(geo_col)s, %(geometry)s)' + + def __init__(self, func, result='', operator='', **kwargs): + # Getting the function prefix. + default = {'function' : func, + 'operator' : operator, + 'result' : result + } + kwargs.update(default) + super(SpatialFunction, self).__init__(**kwargs) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/aggregates.py --- a/web/lib/django/contrib/gis/db/models/aggregates.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/aggregates.py Tue May 25 02:43:45 2010 +0200 @@ -1,31 +1,17 @@ from django.db.models import Aggregate -from django.contrib.gis.db.backend import SpatialBackend from django.contrib.gis.db.models.sql import GeomField -class GeoAggregate(Aggregate): - - def add_to_query(self, query, alias, col, source, is_summary): - if hasattr(source, 'geom_type'): - # Doing additional setup on the Query object for spatial aggregates. - aggregate = getattr(query.aggregates_module, self.name) - - # Adding a conversion class instance and any selection wrapping - # SQL (e.g., needed by Oracle). - if aggregate.conversion_class is GeomField: - query.extra_select_fields[alias] = GeomField() - if SpatialBackend.select: - query.custom_select[alias] = SpatialBackend.select - - super(GeoAggregate, self).add_to_query(query, alias, col, source, is_summary) - -class Collect(GeoAggregate): +class Collect(Aggregate): name = 'Collect' -class Extent(GeoAggregate): +class Extent(Aggregate): name = 'Extent' -class MakeLine(GeoAggregate): +class Extent3D(Aggregate): + name = 'Extent3D' + +class MakeLine(Aggregate): name = 'MakeLine' -class Union(GeoAggregate): +class Union(Aggregate): name = 'Union' diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/fields.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/models/fields.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,294 @@ +from django.db.models.fields import Field +from django.db.models.sql.expressions import SQLEvaluator +from django.utils.translation import ugettext_lazy as _ +from django.contrib.gis import forms +from django.contrib.gis.db.models.proxy import GeometryProxy +from django.contrib.gis.geometry.backend import Geometry, GeometryException + +# Local cache of the spatial_ref_sys table, which holds SRID data for each +# spatial database alias. This cache exists so that the database isn't queried +# for SRID info each time a distance query is constructed. +_srid_cache = {} + +def get_srid_info(srid, connection): + """ + Returns the units, unit name, and spheroid WKT associated with the + given SRID from the `spatial_ref_sys` (or equivalent) spatial database + table for the given database connection. These results are cached. + """ + global _srid_cache + + try: + # The SpatialRefSys model for the spatial backend. + SpatialRefSys = connection.ops.spatial_ref_sys() + except NotImplementedError: + # No `spatial_ref_sys` table in spatial backend (e.g., MySQL). + return None, None, None + + if not connection.alias in _srid_cache: + # Initialize SRID dictionary for database if it doesn't exist. + _srid_cache[connection.alias] = {} + + if not srid in _srid_cache[connection.alias]: + # Use `SpatialRefSys` model to query for spatial reference info. + sr = SpatialRefSys.objects.using(connection.alias).get(srid=srid) + units, units_name = sr.units + spheroid = SpatialRefSys.get_spheroid(sr.wkt) + _srid_cache[connection.alias][srid] = (units, units_name, spheroid) + + return _srid_cache[connection.alias][srid] + +class GeometryField(Field): + "The base GIS field -- maps to the OpenGIS Specification Geometry type." + + # The OpenGIS Geometry name. + geom_type = 'GEOMETRY' + + # Geodetic units. + geodetic_units = ('Decimal Degree', 'degree') + + description = _("The base GIS field -- maps to the OpenGIS Specification Geometry type.") + + def __init__(self, verbose_name=None, srid=4326, spatial_index=True, dim=2, + geography=False, **kwargs): + """ + The initialization function for geometry fields. Takes the following + as keyword arguments: + + srid: + The spatial reference system identifier, an OGC standard. + Defaults to 4326 (WGS84). + + spatial_index: + Indicates whether to create a spatial index. Defaults to True. + Set this instead of 'db_index' for geographic fields since index + creation is different for geometry columns. + + dim: + The number of dimensions for this geometry. Defaults to 2. + + extent: + Customize the extent, in a 4-tuple of WGS 84 coordinates, for the + geometry field entry in the `USER_SDO_GEOM_METADATA` table. Defaults + to (-180.0, -90.0, 180.0, 90.0). + + tolerance: + Define the tolerance, in meters, to use for the geometry field + entry in the `USER_SDO_GEOM_METADATA` table. Defaults to 0.05. + """ + + # Setting the index flag with the value of the `spatial_index` keyword. + self.spatial_index = spatial_index + + # Setting the SRID and getting the units. Unit information must be + # easily available in the field instance for distance queries. + self.srid = srid + + # Setting the dimension of the geometry field. + self.dim = dim + + # Setting the verbose_name keyword argument with the positional + # first parameter, so this works like normal fields. + kwargs['verbose_name'] = verbose_name + + # Is this a geography rather than a geometry column? + self.geography = geography + + # Oracle-specific private attributes for creating the entrie in + # `USER_SDO_GEOM_METADATA` + self._extent = kwargs.pop('extent', (-180.0, -90.0, 180.0, 90.0)) + self._tolerance = kwargs.pop('tolerance', 0.05) + + super(GeometryField, self).__init__(**kwargs) + + # The following functions are used to get the units, their name, and + # the spheroid corresponding to the SRID of the GeometryField. + def _get_srid_info(self, connection): + # Get attributes from `get_srid_info`. + self._units, self._units_name, self._spheroid = get_srid_info(self.srid, connection) + + def spheroid(self, connection): + if not hasattr(self, '_spheroid'): + self._get_srid_info(connection) + return self._spheroid + + def units(self, connection): + if not hasattr(self, '_units'): + self._get_srid_info(connection) + return self._units + + def units_name(self, connection): + if not hasattr(self, '_units_name'): + self._get_srid_info(connection) + return self._units_name + + ### Routines specific to GeometryField ### + def geodetic(self, connection): + """ + Returns true if this field's SRID corresponds with a coordinate + system that uses non-projected units (e.g., latitude/longitude). + """ + return self.units_name(connection) in self.geodetic_units + + def get_distance(self, value, lookup_type, connection): + """ + Returns a distance number in units of the field. For example, if + `D(km=1)` was passed in and the units of the field were in meters, + then 1000 would be returned. + """ + return connection.ops.get_distance(self, value, lookup_type) + + def get_prep_value(self, value): + """ + Spatial lookup values are either a parameter that is (or may be + converted to) a geometry, or a sequence of lookup values that + begins with a geometry. This routine will setup the geometry + value properly, and preserve any other lookup parameters before + returning to the caller. + """ + if isinstance(value, SQLEvaluator): + return value + elif isinstance(value, (tuple, list)): + geom = value[0] + seq_value = True + else: + geom = value + seq_value = False + + # When the input is not a GEOS geometry, attempt to construct one + # from the given string input. + if isinstance(geom, Geometry): + pass + elif isinstance(geom, basestring) or hasattr(geom, '__geo_interface__'): + try: + geom = Geometry(geom) + except GeometryException: + raise ValueError('Could not create geometry from lookup value.') + else: + raise ValueError('Cannot use object with type %s for a geometry lookup parameter.' % type(geom).__name__) + + # Assigning the SRID value. + geom.srid = self.get_srid(geom) + + if seq_value: + lookup_val = [geom] + lookup_val.extend(value[1:]) + return tuple(lookup_val) + else: + return geom + + def get_srid(self, geom): + """ + Returns the default SRID for the given geometry, taking into account + the SRID set for the field. For example, if the input geometry + has no SRID, then that of the field will be returned. + """ + gsrid = geom.srid # SRID of given geometry. + if gsrid is None or self.srid == -1 or (gsrid == -1 and self.srid != -1): + return self.srid + else: + return gsrid + + ### Routines overloaded from Field ### + def contribute_to_class(self, cls, name): + super(GeometryField, self).contribute_to_class(cls, name) + + # Setup for lazy-instantiated Geometry object. + setattr(cls, self.attname, GeometryProxy(Geometry, self)) + + def db_type(self, connection): + return connection.ops.geo_db_type(self) + + def formfield(self, **kwargs): + defaults = {'form_class' : forms.GeometryField, + 'null' : self.null, + 'geom_type' : self.geom_type, + 'srid' : self.srid, + } + defaults.update(kwargs) + return super(GeometryField, self).formfield(**defaults) + + def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False): + """ + Prepare for the database lookup, and return any spatial parameters + necessary for the query. This includes wrapping any geometry + parameters with a backend-specific adapter and formatting any distance + parameters into the correct units for the coordinate system of the + field. + """ + if lookup_type in connection.ops.gis_terms: + # special case for isnull lookup + if lookup_type == 'isnull': + return [] + + # Populating the parameters list, and wrapping the Geometry + # with the Adapter of the spatial backend. + if isinstance(value, (tuple, list)): + params = [connection.ops.Adapter(value[0])] + if lookup_type in connection.ops.distance_functions: + # Getting the distance parameter in the units of the field. + params += self.get_distance(value[1:], lookup_type, connection) + elif lookup_type in connection.ops.truncate_params: + # Lookup is one where SQL parameters aren't needed from the + # given lookup value. + pass + else: + params += value[1:] + elif isinstance(value, SQLEvaluator): + params = [] + else: + params = [connection.ops.Adapter(value)] + + return params + else: + raise ValueError('%s is not a valid spatial lookup for %s.' % + (lookup_type, self.__class__.__name__)) + + def get_prep_lookup(self, lookup_type, value): + if lookup_type == 'isnull': + return bool(value) + else: + return self.get_prep_value(value) + + def get_db_prep_save(self, value, connection): + "Prepares the value for saving in the database." + if value is None: + return None + else: + return connection.ops.Adapter(self.get_prep_value(value)) + + def get_placeholder(self, value, connection): + """ + Returns the placeholder for the geometry column for the + given value. + """ + return connection.ops.get_geom_placeholder(self, value) + +# The OpenGIS Geometry Type Fields +class PointField(GeometryField): + geom_type = 'POINT' + description = _("Point") + +class LineStringField(GeometryField): + geom_type = 'LINESTRING' + description = _("Line string") + +class PolygonField(GeometryField): + geom_type = 'POLYGON' + description = _("Polygon") + +class MultiPointField(GeometryField): + geom_type = 'MULTIPOINT' + description = _("Multi-point") + +class MultiLineStringField(GeometryField): + geom_type = 'MULTILINESTRING' + description = _("Multi-line string") + +class MultiPolygonField(GeometryField): + geom_type = 'MULTIPOLYGON' + description = _("Multi polygon") + +class GeometryCollectionField(GeometryField): + geom_type = 'GEOMETRYCOLLECTION' + description = _("Geometry collection") diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/fields/__init__.py --- a/web/lib/django/contrib/gis/db/models/fields/__init__.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ -from django.contrib.gis import forms -# Getting the SpatialBackend container and the geographic quoting method. -from django.contrib.gis.db.backend import SpatialBackend, gqn -# GeometryProxy, GEOS, and Distance imports. -from django.contrib.gis.db.models.proxy import GeometryProxy -from django.contrib.gis.measure import Distance - -# Local cache of the spatial_ref_sys table, which holds static data. -# This exists so that we don't have to hit the database each time. -_srid_cache = {} - -def get_srid_info(srid): - """ - Returns the units, unit name, and spheroid WKT associated with the - given SRID from the `spatial_ref_sys` (or equivalent) spatial database - table. These results are cached. - """ - global _srid_cache - - if SpatialBackend.mysql: - return None, None, None - - if not srid in _srid_cache: - from django.contrib.gis.models import SpatialRefSys - sr = SpatialRefSys.objects.get(srid=srid) - units, units_name = sr.units - spheroid = SpatialRefSys.get_spheroid(sr.wkt) - _srid_cache[srid] = (units, units_name, spheroid) - - return _srid_cache[srid] - -class GeometryField(SpatialBackend.Field): - "The base GIS field -- maps to the OpenGIS Specification Geometry type." - - # The OpenGIS Geometry name. - geom_type = 'GEOMETRY' - - # Geodetic units. - geodetic_units = ('Decimal Degree', 'degree') - - def __init__(self, verbose_name=None, srid=4326, spatial_index=True, dim=2, **kwargs): - """ - The initialization function for geometry fields. Takes the following - as keyword arguments: - - srid: - The spatial reference system identifier, an OGC standard. - Defaults to 4326 (WGS84). - - spatial_index: - Indicates whether to create a spatial index. Defaults to True. - Set this instead of 'db_index' for geographic fields since index - creation is different for geometry columns. - - dim: - The number of dimensions for this geometry. Defaults to 2. - """ - - # Setting the index flag with the value of the `spatial_index` keyword. - self.spatial_index = spatial_index - - # Setting the SRID and getting the units. Unit information must be - # easily available in the field instance for distance queries. - self.srid = srid - - # Setting the dimension of the geometry field. - self.dim = dim - - # Setting the verbose_name keyword argument with the positional - # first parameter, so this works like normal fields. - kwargs['verbose_name'] = verbose_name - - super(GeometryField, self).__init__(**kwargs) # Calling the parent initializtion function - - # The following properties are used to get the units, their name, and - # the spheroid corresponding to the SRID of the GeometryField. - def _get_srid_info(self): - # Get attributes from `get_srid_info`. - self._units, self._units_name, self._spheroid = get_srid_info(self.srid) - - @property - def spheroid(self): - if not hasattr(self, '_spheroid'): - self._get_srid_info() - return self._spheroid - - @property - def units(self): - if not hasattr(self, '_units'): - self._get_srid_info() - return self._units - - @property - def units_name(self): - if not hasattr(self, '_units_name'): - self._get_srid_info() - return self._units_name - - # The following properties are for formerly private variables that are now - # public for GeometryField. Because of their use by third-party applications, - # a deprecation warning is issued to notify them to use new attribute name. - def _deprecated_warning(self, old_name, new_name): - from warnings import warn - warn('The `%s` attribute name is deprecated, please update your code to use `%s` instead.' % - (old_name, new_name)) - - @property - def _geom(self): - self._deprecated_warning('_geom', 'geom_type') - return self.geom_type - - @property - def _index(self): - self._deprecated_warning('_index', 'spatial_index') - return self.spatial_index - - @property - def _srid(self): - self._deprecated_warning('_srid', 'srid') - return self.srid - - ### Routines specific to GeometryField ### - @property - def geodetic(self): - """ - Returns true if this field's SRID corresponds with a coordinate - system that uses non-projected units (e.g., latitude/longitude). - """ - return self.units_name in self.geodetic_units - - def get_distance(self, dist_val, lookup_type): - """ - Returns a distance number in units of the field. For example, if - `D(km=1)` was passed in and the units of the field were in meters, - then 1000 would be returned. - """ - # Getting the distance parameter and any options. - if len(dist_val) == 1: dist, option = dist_val[0], None - else: dist, option = dist_val - - if isinstance(dist, Distance): - if self.geodetic: - # Won't allow Distance objects w/DWithin lookups on PostGIS. - if SpatialBackend.postgis and lookup_type == 'dwithin': - raise TypeError('Only numeric values of degree units are allowed on geographic DWithin queries.') - # Spherical distance calculation parameter should be in meters. - dist_param = dist.m - else: - dist_param = getattr(dist, Distance.unit_attname(self.units_name)) - else: - # Assuming the distance is in the units of the field. - dist_param = dist - - if SpatialBackend.postgis and self.geodetic and lookup_type != 'dwithin' and option == 'spheroid': - # On PostGIS, by default `ST_distance_sphere` is used; but if the - # accuracy of `ST_distance_spheroid` is needed than the spheroid - # needs to be passed to the SQL stored procedure. - return [gqn(self._spheroid), dist_param] - else: - return [dist_param] - - def get_geometry(self, value): - """ - Retrieves the geometry, setting the default SRID from the given - lookup parameters. - """ - if isinstance(value, (tuple, list)): - geom = value[0] - else: - geom = value - - # When the input is not a GEOS geometry, attempt to construct one - # from the given string input. - if isinstance(geom, SpatialBackend.Geometry): - pass - elif isinstance(geom, basestring): - try: - geom = SpatialBackend.Geometry(geom) - except SpatialBackend.GeometryException: - raise ValueError('Could not create geometry from lookup value: %s' % str(value)) - else: - raise TypeError('Cannot use parameter of `%s` type as lookup parameter.' % type(value)) - - # Assigning the SRID value. - geom.srid = self.get_srid(geom) - - return geom - - def get_srid(self, geom): - """ - Returns the default SRID for the given geometry, taking into account - the SRID set for the field. For example, if the input geometry - has no SRID, then that of the field will be returned. - """ - gsrid = geom.srid # SRID of given geometry. - if gsrid is None or self.srid == -1 or (gsrid == -1 and self.srid != -1): - return self.srid - else: - return gsrid - - ### Routines overloaded from Field ### - def contribute_to_class(self, cls, name): - super(GeometryField, self).contribute_to_class(cls, name) - - # Setup for lazy-instantiated Geometry object. - setattr(cls, self.attname, GeometryProxy(SpatialBackend.Geometry, self)) - - def formfield(self, **kwargs): - defaults = {'form_class' : forms.GeometryField, - 'null' : self.null, - 'geom_type' : self.geom_type, - 'srid' : self.srid, - } - defaults.update(kwargs) - return super(GeometryField, self).formfield(**defaults) - - def get_db_prep_lookup(self, lookup_type, value): - """ - Returns the spatial WHERE clause and associated parameters for the - given lookup type and value. The value will be prepared for database - lookup (e.g., spatial transformation SQL will be added if necessary). - """ - if lookup_type in SpatialBackend.gis_terms: - # special case for isnull lookup - if lookup_type == 'isnull': return [], [] - - # Get the geometry with SRID; defaults SRID to that of the field - # if it is None. - geom = self.get_geometry(value) - - # Getting the WHERE clause list and the associated params list. The params - # list is populated with the Adaptor wrapping the Geometry for the - # backend. The WHERE clause list contains the placeholder for the adaptor - # (e.g. any transformation SQL). - where = [self.get_placeholder(geom)] - params = [SpatialBackend.Adaptor(geom)] - - if isinstance(value, (tuple, list)): - if lookup_type in SpatialBackend.distance_functions: - # Getting the distance parameter in the units of the field. - where += self.get_distance(value[1:], lookup_type) - elif lookup_type in SpatialBackend.limited_where: - pass - else: - # Otherwise, making sure any other parameters are properly quoted. - where += map(gqn, value[1:]) - return where, params - else: - raise TypeError("Field has invalid lookup: %s" % lookup_type) - - def get_db_prep_save(self, value): - "Prepares the value for saving in the database." - if value is None: - return None - else: - return SpatialBackend.Adaptor(self.get_geometry(value)) - -# The OpenGIS Geometry Type Fields -class PointField(GeometryField): - geom_type = 'POINT' - -class LineStringField(GeometryField): - geom_type = 'LINESTRING' - -class PolygonField(GeometryField): - geom_type = 'POLYGON' - -class MultiPointField(GeometryField): - geom_type = 'MULTIPOINT' - -class MultiLineStringField(GeometryField): - geom_type = 'MULTILINESTRING' - -class MultiPolygonField(GeometryField): - geom_type = 'MULTIPOLYGON' - -class GeometryCollectionField(GeometryField): - geom_type = 'GEOMETRYCOLLECTION' diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/manager.py --- a/web/lib/django/contrib/gis/db/models/manager.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/manager.py Tue May 25 02:43:45 2010 +0200 @@ -1,6 +1,5 @@ from django.db.models.manager import Manager from django.contrib.gis.db.models.query import GeoQuerySet -from django.contrib.gis.db.models.sql.subqueries import insert_query class GeoManager(Manager): "Overrides Manager to return Geographic QuerySets." @@ -11,7 +10,7 @@ use_for_related_fields = True def get_query_set(self): - return GeoQuerySet(model=self.model) + return GeoQuerySet(self.model, using=self._db) def area(self, *args, **kwargs): return self.get_query_set().area(*args, **kwargs) @@ -34,6 +33,15 @@ def extent(self, *args, **kwargs): return self.get_query_set().extent(*args, **kwargs) + def extent3d(self, *args, **kwargs): + return self.get_query_set().extent3d(*args, **kwargs) + + def force_rhr(self, *args, **kwargs): + return self.get_query_set().force_rhr(*args, **kwargs) + + def geohash(self, *args, **kwargs): + return self.get_query_set().geohash(*args, **kwargs) + def geojson(self, *args, **kwargs): return self.get_query_set().geojson(*args, **kwargs) @@ -51,7 +59,7 @@ def make_line(self, *args, **kwargs): return self.get_query_set().make_line(*args, **kwargs) - + def mem_size(self, *args, **kwargs): return self.get_query_set().mem_size(*args, **kwargs) @@ -67,6 +75,9 @@ def point_on_surface(self, *args, **kwargs): return self.get_query_set().point_on_surface(*args, **kwargs) + def reverse_geom(self, *args, **kwargs): + return self.get_query_set().reverse_geom(*args, **kwargs) + def scale(self, *args, **kwargs): return self.get_query_set().scale(*args, **kwargs) @@ -90,6 +101,3 @@ def unionagg(self, *args, **kwargs): return self.get_query_set().unionagg(*args, **kwargs) - - def _insert(self, values, **kwargs): - return insert_query(self.model, values, **kwargs) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/proxy.py --- a/web/lib/django/contrib/gis/db/models/proxy.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/proxy.py Tue May 25 02:43:45 2010 +0200 @@ -1,42 +1,44 @@ """ - The GeometryProxy object, allows for lazy-geometries. The proxy uses - Python descriptors for instantiating and setting Geometry objects - corresponding to geographic model fields. +The GeometryProxy object, allows for lazy-geometries. The proxy uses +Python descriptors for instantiating and setting Geometry objects +corresponding to geographic model fields. - Thanks to Robert Coup for providing this functionality (see #4322). +Thanks to Robert Coup for providing this functionality (see #4322). """ -from types import NoneType, StringType, UnicodeType - -class GeometryProxy(object): - def __init__(self, klass, field): +class GeometryProxy(object): + def __init__(self, klass, field): """ - Proxy initializes on the given Geometry class (not an instance) and + Proxy initializes on the given Geometry class (not an instance) and the GeometryField. """ - self._field = field + self._field = field self._klass = klass - - def __get__(self, obj, type=None): + + def __get__(self, obj, type=None): """ This accessor retrieves the geometry, initializing it using the geometry - class specified during initialization and the HEXEWKB value of the field. + class specified during initialization and the HEXEWKB value of the field. Currently, only GEOS or OGR geometries are supported. """ + if obj is None: + # Accessed on a class, not an instance + return self + # Getting the value of the field. - geom_value = obj.__dict__[self._field.attname] - - if isinstance(geom_value, self._klass): + geom_value = obj.__dict__[self._field.attname] + + if isinstance(geom_value, self._klass): geom = geom_value elif (geom_value is None) or (geom_value==''): geom = None - else: + else: # Otherwise, a Geometry object is built using the field's contents, # and the model's corresponding attribute is set. geom = self._klass(geom_value) - setattr(obj, self._field.attname, geom) - return geom - + setattr(obj, self._field.attname, geom) + return geom + def __set__(self, obj, value): """ This accessor sets the proxied geometry with the geometry class @@ -45,18 +47,18 @@ """ # The OGC Geometry type of the field. gtype = self._field.geom_type - + # The geometry type must match that of the field -- unless the # general GeometryField is used. if isinstance(value, self._klass) and (str(value.geom_type).upper() == gtype or gtype == 'GEOMETRY'): # Assigning the SRID to the geometry. if value.srid is None: value.srid = self._field.srid - elif isinstance(value, (NoneType, StringType, UnicodeType)): - # Set with None, WKT, or HEX + elif value is None or isinstance(value, (basestring, buffer)): + # Set with None, WKT, HEX, or WKB pass else: raise TypeError('cannot set %s GeometryProxy with value of type: %s' % (obj.__class__.__name__, type(value))) # Setting the objects dictionary with the value, and returning. - obj.__dict__[self._field.attname] = value - return value + obj.__dict__[self._field.attname] = value + return value diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/query.py --- a/web/lib/django/contrib/gis/db/models/query.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/query.py Tue May 25 02:43:45 2010 +0200 @@ -1,20 +1,19 @@ -from django.core.exceptions import ImproperlyConfigured -from django.db import connection +from django.db import connections from django.db.models.query import QuerySet, Q, ValuesQuerySet, ValuesListQuerySet -from django.contrib.gis.db.backend import SpatialBackend from django.contrib.gis.db.models import aggregates -from django.contrib.gis.db.models.fields import get_srid_info, GeometryField, PointField +from django.contrib.gis.db.models.fields import get_srid_info, GeometryField, PointField, LineStringField from django.contrib.gis.db.models.sql import AreaField, DistanceField, GeomField, GeoQuery, GeoWhereNode +from django.contrib.gis.geometry.backend import Geometry from django.contrib.gis.measure import Area, Distance class GeoQuerySet(QuerySet): "The Geographic QuerySet." ### Methods overloaded from QuerySet ### - def __init__(self, model=None, query=None): - super(GeoQuerySet, self).__init__(model=model, query=query) - self.query = query or GeoQuery(self.model, connection) + def __init__(self, model=None, query=None, using=None): + super(GeoQuerySet, self).__init__(model=model, query=query, using=using) + self.query = query or GeoQuery(self.model) def values(self, *fields): return self._clone(klass=GeoValuesQuerySet, setup=True, _fields=fields) @@ -42,14 +41,16 @@ 'geo_field' : geo_field, 'setup' : False, } - if SpatialBackend.oracle: + connection = connections[self.db] + backend = connection.ops + if backend.oracle: s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s' s['procedure_args']['tolerance'] = tolerance s['select_field'] = AreaField('sq_m') # Oracle returns area in units of meters. - elif SpatialBackend.postgis or SpatialBackend.spatialite: - if not geo_field.geodetic: + elif backend.postgis or backend.spatialite: + if not geo_field.geodetic(connection): # Getting the area units of the geographic field. - s['select_field'] = AreaField(Area.unit_attname(geo_field.units_name)) + s['select_field'] = AreaField(Area.unit_attname(geo_field.units_name(connection))) else: # TODO: Do we want to support raw number areas for geodetic fields? raise Exception('Area on geodetic coordinate systems not supported.') @@ -110,6 +111,23 @@ """ return self._spatial_aggregate(aggregates.Extent, **kwargs) + def extent3d(self, **kwargs): + """ + Returns the aggregate extent, in 3D, of the features in the + GeoQuerySet. It is returned as a 6-tuple, comprising: + (xmin, ymin, zmin, xmax, ymax, zmax). + """ + return self._spatial_aggregate(aggregates.Extent3D, **kwargs) + + def force_rhr(self, **kwargs): + """ + Returns a modified version of the Polygon/MultiPolygon in which + all of the vertices follow the Right-Hand-Rule. By default, + this is attached as the `force_rhr` attribute on each element + of the GeoQuerySet. + """ + return self._geom_attribute('force_rhr', **kwargs) + def geojson(self, precision=8, crs=False, bbox=False, **kwargs): """ Returns a GeoJSON representation of the geomtry field in a `geojson` @@ -119,16 +137,16 @@ the coordinate reference system and the bounding box to be included in the GeoJSON representation of the geometry. """ - if not SpatialBackend.postgis or not SpatialBackend.geojson: + backend = connections[self.db].ops + if not backend.geojson: raise NotImplementedError('Only PostGIS 1.3.4+ supports GeoJSON serialization.') - + if not isinstance(precision, (int, long)): raise TypeError('Precision keyword must be set with an integer.') - + # Setting the options flag -- which depends on which version of # PostGIS we're using. - major, minor1, minor2 = SpatialBackend.version - if major >=1 and (minor1 >= 4): + if backend.spatial_version >= (1, 4, 0): options = 0 if crs and bbox: options = 3 elif bbox: options = 1 @@ -138,23 +156,37 @@ if crs and bbox: options = 3 elif crs: options = 1 elif bbox: options = 2 - s = {'desc' : 'GeoJSON', + s = {'desc' : 'GeoJSON', 'procedure_args' : {'precision' : precision, 'options' : options}, 'procedure_fmt' : '%(geo_col)s,%(precision)s,%(options)s', } return self._spatial_attribute('geojson', s, **kwargs) + def geohash(self, precision=20, **kwargs): + """ + Returns a GeoHash representation of the given field in a `geohash` + attribute on each element of the GeoQuerySet. + + The `precision` keyword may be used to custom the number of + _characters_ used in the output GeoHash, the default is 20. + """ + s = {'desc' : 'GeoHash', + 'procedure_args': {'precision': precision}, + 'procedure_fmt': '%(geo_col)s,%(precision)s', + } + return self._spatial_attribute('geohash', s, **kwargs) + def gml(self, precision=8, version=2, **kwargs): """ Returns GML representation of the given field in a `gml` attribute on each element of the GeoQuerySet. """ + backend = connections[self.db].ops s = {'desc' : 'GML', 'procedure_args' : {'precision' : precision}} - if SpatialBackend.postgis: + if backend.postgis: # PostGIS AsGML() aggregate function parameter order depends on the # version -- uggh. - major, minor1, minor2 = SpatialBackend.version - if major >= 1 and (minor1 > 3 or (minor1 == 3 and minor2 > 1)): + if backend.spatial_version > (1, 3, 1): procedure_fmt = '%(version)s,%(geo_col)s,%(precision)s' else: procedure_fmt = '%(geo_col)s,%(precision)s,%(version)s' @@ -235,12 +267,23 @@ """ return self._geom_attribute('point_on_surface', **kwargs) + def reverse_geom(self, **kwargs): + """ + Reverses the coordinate order of the geometry, and attaches as a + `reverse` attribute on each element of this GeoQuerySet. + """ + s = {'select_field' : GeomField(),} + kwargs.setdefault('model_att', 'reverse_geom') + if connections[self.db].ops.oracle: + s['geo_field_type'] = LineStringField + return self._spatial_attribute('reverse', s, **kwargs) + def scale(self, x, y, z=0.0, **kwargs): """ Scales the geometry to a new size by multiplying the ordinates with the given x,y,z scale factors. """ - if SpatialBackend.spatialite: + if connections[self.db].ops.spatialite: if z != 0.0: raise NotImplementedError('SpatiaLite does not support 3D scaling.') s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s', @@ -300,10 +343,10 @@ terms of relative moves (rather than absolute). `precision` => May be used to set the maximum number of decimal - digits used in output (defaults to 8). + digits used in output (defaults to 8). """ relative = int(bool(relative)) - if not isinstance(precision, (int, long)): + if not isinstance(precision, (int, long)): raise TypeError('SVG precision keyword argument must be an integer.') s = {'desc' : 'SVG', 'procedure_fmt' : '%(geo_col)s,%(rel)s,%(precision)s', @@ -325,7 +368,7 @@ Translates the geometry to a new location using the given numeric parameters as offsets. """ - if SpatialBackend.spatialite: + if connections[self.db].ops.spatialite: if z != 0.0: raise NotImplementedError('SpatiaLite does not support 3D translation.') s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s', @@ -360,7 +403,7 @@ # Setting the key for the field's column with the custom SELECT SQL to # override the geometry column returned from the database. - custom_sel = '%s(%s, %s)' % (SpatialBackend.transform, geo_col, srid) + custom_sel = '%s(%s, %s)' % (connections[self.db].ops.transform, geo_col, srid) # TODO: Should we have this as an alias? # custom_sel = '(%s(%s, %s)) AS %s' % (SpatialBackend.transform, geo_col, srid, qn(geo_field.name)) self.query.transformed_srid = srid # So other GeoQuerySet methods @@ -388,9 +431,13 @@ Performs set up for executing the spatial function. """ # Does the spatial backend support this? - func = getattr(SpatialBackend, att, False) + connection = connections[self.db] + func = getattr(connection.ops, att, False) if desc is None: desc = att - if not func: raise ImproperlyConfigured('%s stored procedure not available.' % desc) + if not func: + raise NotImplementedError('%s stored procedure not available on ' + 'the %s backend.' % + (desc, connection.ops.name)) # Initializing the procedure arguments. procedure_args = {'function' : func} @@ -434,7 +481,7 @@ # Adding any keyword parameters for the Aggregate object. Oracle backends # in particular need an additional `tolerance` parameter. agg_kwargs = {} - if SpatialBackend.oracle: agg_kwargs['tolerance'] = tolerance + if connections[self.db].ops.oracle: agg_kwargs['tolerance'] = tolerance # Calling the QuerySet.aggregate, and returning only the value of the aggregate. return self.aggregate(geoagg=aggregate(agg_col, **agg_kwargs))['geoagg'] @@ -471,9 +518,13 @@ settings.setdefault('procedure_fmt', '%(geo_col)s') settings.setdefault('select_params', []) + connection = connections[self.db] + backend = connection.ops + # Performing setup for the spatial column, unless told not to. if settings.get('setup', True): - default_args, geo_field = self._spatial_setup(att, desc=settings['desc'], field_name=field_name) + default_args, geo_field = self._spatial_setup(att, desc=settings['desc'], field_name=field_name, + geo_field_type=settings.get('geo_field_type', None)) for k, v in default_args.iteritems(): settings['procedure_args'].setdefault(k, v) else: geo_field = settings['geo_field'] @@ -483,13 +534,16 @@ # Special handling for any argument that is a geometry. for name in settings['geom_args']: - # Using the field's get_db_prep_lookup() to get any needed - # transformation SQL -- we pass in a 'dummy' `contains` lookup. - where, params = geo_field.get_db_prep_lookup('contains', settings['procedure_args'][name]) + # Using the field's get_placeholder() routine to get any needed + # transformation SQL. + geom = geo_field.get_prep_value(settings['procedure_args'][name]) + params = geo_field.get_db_prep_lookup('contains', geom, connection=connection) + geom_placeholder = geo_field.get_placeholder(geom, connection) + # Replacing the procedure format with that of any needed # transformation SQL. old_fmt = '%%(%s)s' % name - new_fmt = where[0] % '%%s' + new_fmt = geom_placeholder % '%%s' settings['procedure_fmt'] = settings['procedure_fmt'].replace(old_fmt, new_fmt) settings['select_params'].extend(params) @@ -499,8 +553,10 @@ # If the result of this function needs to be converted. if settings.get('select_field', False): sel_fld = settings['select_field'] - if isinstance(sel_fld, GeomField) and SpatialBackend.select: - self.query.custom_select[model_att] = SpatialBackend.select + if isinstance(sel_fld, GeomField) and backend.select: + self.query.custom_select[model_att] = backend.select + if connection.ops.oracle: + sel_fld.empty_strings_allowed = False self.query.extra_select_fields[model_att] = sel_fld # Finally, setting the extra selection attribute with @@ -519,36 +575,47 @@ # If geodetic defaulting distance attribute to meters (Oracle and # PostGIS spherical distances return meters). Otherwise, use the # units of the geometry field. - if geo_field.geodetic: + connection = connections[self.db] + geodetic = geo_field.geodetic(connection) + geography = geo_field.geography + + if geodetic: dist_att = 'm' else: - dist_att = Distance.unit_attname(geo_field.units_name) + dist_att = Distance.unit_attname(geo_field.units_name(connection)) - # Shortcut booleans for what distance function we're using. + # Shortcut booleans for what distance function we're using and + # whether the geometry field is 3D. distance = func == 'distance' length = func == 'length' perimeter = func == 'perimeter' if not (distance or length or perimeter): raise ValueError('Unknown distance function: %s' % func) + geom_3d = geo_field.dim == 3 # The field's get_db_prep_lookup() is used to get any # extra distance parameters. Here we set up the # parameters that will be passed in to field's function. lookup_params = [geom or 'POINT (0 0)', 0] + # Getting the spatial backend operations. + backend = connection.ops + # If the spheroid calculation is desired, either by the `spheroid` # keyword or when calculating the length of geodetic field, make # sure the 'spheroid' distance setting string is passed in so we # get the correct spatial stored procedure. - if spheroid or (SpatialBackend.postgis and geo_field.geodetic and length): + if spheroid or (backend.postgis and geodetic and + (not geography) and length): lookup_params.append('spheroid') - where, params = geo_field.get_db_prep_lookup('distance_lte', lookup_params) + lookup_params = geo_field.get_prep_value(lookup_params) + params = geo_field.get_db_prep_lookup('distance_lte', lookup_params, connection=connection) # The `geom_args` flag is set to true if a geometry parameter was # passed in. geom_args = bool(geom) - if SpatialBackend.oracle: + if backend.oracle: if distance: procedure_fmt = '%(geo_col)s,%(geom)s,%(tolerance)s' elif length or perimeter: @@ -558,12 +625,10 @@ # Getting whether this field is in units of degrees since the field may have # been transformed via the `transform` GeoQuerySet method. if self.query.transformed_srid: - u, unit_name, s = get_srid_info(self.query.transformed_srid) + u, unit_name, s = get_srid_info(self.query.transformed_srid, connection) geodetic = unit_name in geo_field.geodetic_units - else: - geodetic = geo_field.geodetic - if SpatialBackend.spatialite and geodetic: + if backend.spatialite and geodetic: raise ValueError('SQLite does not support linear distance calculations on geodetic coordinate systems.') if distance: @@ -573,14 +638,14 @@ # (which will transform to the original SRID of the field rather # than to what was transformed to). geom_args = False - procedure_fmt = '%s(%%(geo_col)s, %s)' % (SpatialBackend.transform, self.query.transformed_srid) + procedure_fmt = '%s(%%(geo_col)s, %s)' % (backend.transform, self.query.transformed_srid) if geom.srid is None or geom.srid == self.query.transformed_srid: # If the geom parameter srid is None, it is assumed the coordinates # are in the transformed units. A placeholder is used for the # geometry parameter. `GeomFromText` constructor is also needed # to wrap geom placeholder for SpatiaLite. - if SpatialBackend.spatialite: - procedure_fmt += ', %s(%%%%s, %s)' % (SpatialBackend.from_text, self.query.transformed_srid) + if backend.spatialite: + procedure_fmt += ', %s(%%%%s, %s)' % (backend.from_text, self.query.transformed_srid) else: procedure_fmt += ', %%s' else: @@ -588,38 +653,46 @@ # so wrapping the geometry placeholder in transformation SQL. # SpatiaLite also needs geometry placeholder wrapped in `GeomFromText` # constructor. - if SpatialBackend.spatialite: - procedure_fmt += ', %s(%s(%%%%s, %s), %s)' % (SpatialBackend.transform, SpatialBackend.from_text, + if backend.spatialite: + procedure_fmt += ', %s(%s(%%%%s, %s), %s)' % (backend.transform, backend.from_text, geom.srid, self.query.transformed_srid) else: - procedure_fmt += ', %s(%%%%s, %s)' % (SpatialBackend.transform, self.query.transformed_srid) + procedure_fmt += ', %s(%%%%s, %s)' % (backend.transform, self.query.transformed_srid) else: # `transform()` was not used on this GeoQuerySet. procedure_fmt = '%(geo_col)s,%(geom)s' - if geodetic: + if not geography and geodetic: # Spherical distance calculation is needed (because the geographic # field is geodetic). However, the PostGIS ST_distance_sphere/spheroid() # procedures may only do queries from point columns to point geometries # some error checking is required. - if not isinstance(geo_field, PointField): - raise ValueError('Spherical distance calculation only supported on PointFields.') - if not str(SpatialBackend.Geometry(buffer(params[0].wkb)).geom_type) == 'Point': - raise ValueError('Spherical distance calculation only supported with Point Geometry parameters') + if not backend.geography: + if not isinstance(geo_field, PointField): + raise ValueError('Spherical distance calculation only supported on PointFields.') + if not str(Geometry(buffer(params[0].ewkb)).geom_type) == 'Point': + raise ValueError('Spherical distance calculation only supported with Point Geometry parameters') # The `function` procedure argument needs to be set differently for # geodetic distance calculations. if spheroid: # Call to distance_spheroid() requires spheroid param as well. - procedure_fmt += ',%(spheroid)s' - procedure_args.update({'function' : SpatialBackend.distance_spheroid, 'spheroid' : where[1]}) + procedure_fmt += ",'%(spheroid)s'" + procedure_args.update({'function' : backend.distance_spheroid, 'spheroid' : params[1]}) else: - procedure_args.update({'function' : SpatialBackend.distance_sphere}) + procedure_args.update({'function' : backend.distance_sphere}) elif length or perimeter: procedure_fmt = '%(geo_col)s' - if geodetic and length: - # There's no `length_sphere` - procedure_fmt += ',%(spheroid)s' - procedure_args.update({'function' : SpatialBackend.length_spheroid, 'spheroid' : where[1]}) + if not geography and geodetic and length: + # There's no `length_sphere`, and `length_spheroid` also + # works on 3D geometries. + procedure_fmt += ",'%(spheroid)s'" + procedure_args.update({'function' : backend.length_spheroid, 'spheroid' : params[1]}) + elif geom_3d and backend.postgis: + # Use 3D variants of perimeter and length routines on PostGIS. + if perimeter: + procedure_args.update({'function' : backend.perimeter3d}) + elif length: + procedure_args.update({'function' : backend.length3d}) # Setting up the settings for `_spatial_attribute`. s = {'select_field' : DistanceField(dist_att), @@ -634,7 +707,7 @@ elif geom: # The geometry is passed in as a parameter because we handled # transformation conditions in this routine. - s['select_params'] = [SpatialBackend.Adaptor(geom)] + s['select_params'] = [backend.Adapter(geom)] return self._spatial_attribute(func, s, **kwargs) def _geom_attribute(self, func, tolerance=0.05, **kwargs): @@ -643,7 +716,7 @@ Geometry attribute (e.g., `centroid`, `point_on_surface`). """ s = {'select_field' : GeomField(),} - if SpatialBackend.oracle: + if connections[self.db].ops.oracle: s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s' s['procedure_args'] = {'tolerance' : tolerance} return self._spatial_attribute(func, s, **kwargs) @@ -660,7 +733,7 @@ 'procedure_fmt' : '%(geo_col)s,%(geom)s', 'procedure_args' : {'geom' : geom}, } - if SpatialBackend.oracle: + if connections[self.db].ops.oracle: s['procedure_fmt'] += ',%(tolerance)s' s['procedure_args']['tolerance'] = tolerance return self._spatial_attribute(func, s, **kwargs) @@ -677,16 +750,17 @@ # If so, it'll have to be added to the select related information # (e.g., if 'location__point' was given as the field name). self.query.add_select_related([field_name]) - self.query.pre_sql_setup() + compiler = self.query.get_compiler(self.db) + compiler.pre_sql_setup() rel_table, rel_col = self.query.related_select_cols[self.query.related_select_fields.index(geo_field)] - return self.query._field_column(geo_field, rel_table) + return compiler._field_column(geo_field, rel_table) elif not geo_field in opts.local_fields: # This geographic field is inherited from another model, so we have to # use the db table for the _parent_ model instead. tmp_fld, parent_model, direct, m2m = opts.get_field_by_name(geo_field.name) - return self.query._field_column(geo_field, parent_model._meta.db_table) + return self.query.get_compiler(self.db)._field_column(geo_field, parent_model._meta.db_table) else: - return self.query._field_column(geo_field) + return self.query.get_compiler(self.db)._field_column(geo_field) class GeoValuesQuerySet(ValuesQuerySet): def __init__(self, *args, **kwargs): diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/sql/aggregates.py --- a/web/lib/django/contrib/gis/db/models/sql/aggregates.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/sql/aggregates.py Tue May 25 02:43:45 2010 +0200 @@ -1,73 +1,10 @@ from django.db.models.sql.aggregates import * from django.contrib.gis.db.models.fields import GeometryField from django.contrib.gis.db.models.sql.conversion import GeomField -from django.contrib.gis.db.backend import SpatialBackend - -# Default SQL template for spatial aggregates. -geo_template = '%(function)s(%(field)s)' - -# Default conversion functions for aggregates; will be overridden if implemented -# for the spatial backend. -def convert_extent(box): - raise NotImplementedError('Aggregate extent not implemented for this spatial backend.') - -def convert_geom(wkt, geo_field): - raise NotImplementedError('Aggregate method not implemented for this spatial backend.') - -if SpatialBackend.postgis: - def convert_extent(box): - # Box text will be something like "BOX(-90.0 30.0, -85.0 40.0)"; - # parsing out and returning as a 4-tuple. - ll, ur = box[4:-1].split(',') - xmin, ymin = map(float, ll.split()) - xmax, ymax = map(float, ur.split()) - return (xmin, ymin, xmax, ymax) - - def convert_geom(hex, geo_field): - if hex: return SpatialBackend.Geometry(hex) - else: return None -elif SpatialBackend.oracle: - # Oracle spatial aggregates need a tolerance. - geo_template = '%(function)s(SDOAGGRTYPE(%(field)s,%(tolerance)s))' - - def convert_extent(clob): - if clob: - # Generally, Oracle returns a polygon for the extent -- however, - # it can return a single point if there's only one Point in the - # table. - ext_geom = SpatialBackend.Geometry(clob.read()) - gtype = str(ext_geom.geom_type) - if gtype == 'Polygon': - # Construct the 4-tuple from the coordinates in the polygon. - shell = ext_geom.shell - ll, ur = shell[0][:2], shell[2][:2] - elif gtype == 'Point': - ll = ext_geom.coords[:2] - ur = ll - else: - raise Exception('Unexpected geometry type returned for extent: %s' % gtype) - xmin, ymin = ll - xmax, ymax = ur - return (xmin, ymin, xmax, ymax) - else: - return None - - def convert_geom(clob, geo_field): - if clob: - return SpatialBackend.Geometry(clob.read(), geo_field.srid) - else: - return None -elif SpatialBackend.spatialite: - # SpatiaLite returns WKT. - def convert_geom(wkt, geo_field): - if wkt: - return SpatialBackend.Geometry(wkt, geo_field.srid) - else: - return None class GeoAggregate(Aggregate): - # Overriding the SQL template with the geographic one. - sql_template = geo_template + # Default SQL template for spatial aggregates. + sql_template = '%(function)s(%(field)s)' # Conversion class, if necessary. conversion_class = None @@ -75,37 +12,50 @@ # Flags for indicating the type of the aggregate. is_extent = False - def __init__(self, col, source=None, is_summary=False, **extra): + def __init__(self, col, source=None, is_summary=False, tolerance=0.05, **extra): super(GeoAggregate, self).__init__(col, source, is_summary, **extra) - if not self.is_extent and SpatialBackend.oracle: - self.extra.setdefault('tolerance', 0.05) + # Required by some Oracle aggregates. + self.tolerance = tolerance # Can't use geographic aggregates on non-geometry fields. if not isinstance(self.source, GeometryField): raise ValueError('Geospatial aggregates only allowed on geometry fields.') - # Making sure the SQL function is available for this spatial backend. - if not self.sql_function: - raise NotImplementedError('This aggregate functionality not implemented for your spatial backend.') + def as_sql(self, qn, connection): + "Return the aggregate, rendered as SQL." + + if connection.ops.oracle: + self.extra['tolerance'] = self.tolerance + + if hasattr(self.col, 'as_sql'): + field_name = self.col.as_sql(qn, connection) + elif isinstance(self.col, (list, tuple)): + field_name = '.'.join([qn(c) for c in self.col]) + else: + field_name = self.col + + sql_template, sql_function = connection.ops.spatial_aggregate_sql(self) + + params = { + 'function': sql_function, + 'field': field_name + } + params.update(self.extra) + + return sql_template % params class Collect(GeoAggregate): - conversion_class = GeomField - sql_function = SpatialBackend.collect + pass class Extent(GeoAggregate): - is_extent = True - sql_function = SpatialBackend.extent + is_extent = '2D' -if SpatialBackend.oracle: - # Have to change Extent's attributes here for Oracle. - Extent.conversion_class = GeomField - Extent.sql_template = '%(function)s(%(field)s)' +class Extent3D(GeoAggregate): + is_extent = '3D' class MakeLine(GeoAggregate): - conversion_class = GeomField - sql_function = SpatialBackend.make_line + pass class Union(GeoAggregate): - conversion_class = GeomField - sql_function = SpatialBackend.unionagg + pass diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/sql/compiler.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/db/models/sql/compiler.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,276 @@ +from itertools import izip +from django.db.backends.util import truncate_name +from django.db.models.sql import compiler +from django.db.models.sql.constants import TABLE_NAME +from django.db.models.sql.query import get_proxied_model + +SQLCompiler = compiler.SQLCompiler + +class GeoSQLCompiler(compiler.SQLCompiler): + + def get_columns(self, with_aliases=False): + """ + Return the list of columns to use in the select statement. If no + columns have been specified, returns all columns relating to fields in + the model. + + If 'with_aliases' is true, any column names that are duplicated + (without the table names) are given unique aliases. This is needed in + some cases to avoid ambiguitity with nested queries. + + This routine is overridden from Query to handle customized selection of + geometry columns. + """ + qn = self.quote_name_unless_alias + qn2 = self.connection.ops.quote_name + result = ['(%s) AS %s' % (self.get_extra_select_format(alias) % col[0], qn2(alias)) + for alias, col in self.query.extra_select.iteritems()] + aliases = set(self.query.extra_select.keys()) + if with_aliases: + col_aliases = aliases.copy() + else: + col_aliases = set() + if self.query.select: + only_load = self.deferred_to_columns() + # This loop customized for GeoQuery. + for col, field in izip(self.query.select, self.query.select_fields): + if isinstance(col, (list, tuple)): + alias, column = col + table = self.query.alias_map[alias][TABLE_NAME] + if table in only_load and col not in only_load[table]: + continue + r = self.get_field_select(field, alias, column) + if with_aliases: + if col[1] in col_aliases: + c_alias = 'Col%d' % len(col_aliases) + result.append('%s AS %s' % (r, c_alias)) + aliases.add(c_alias) + col_aliases.add(c_alias) + else: + result.append('%s AS %s' % (r, qn2(col[1]))) + aliases.add(r) + col_aliases.add(col[1]) + else: + result.append(r) + aliases.add(r) + col_aliases.add(col[1]) + else: + result.append(col.as_sql(qn, self.connection)) + + if hasattr(col, 'alias'): + aliases.add(col.alias) + col_aliases.add(col.alias) + + elif self.query.default_cols: + cols, new_aliases = self.get_default_columns(with_aliases, + col_aliases) + result.extend(cols) + aliases.update(new_aliases) + + max_name_length = self.connection.ops.max_name_length() + result.extend([ + '%s%s' % ( + self.get_extra_select_format(alias) % aggregate.as_sql(qn, self.connection), + alias is not None + and ' AS %s' % qn(truncate_name(alias, max_name_length)) + or '' + ) + for alias, aggregate in self.query.aggregate_select.items() + ]) + + # This loop customized for GeoQuery. + for (table, col), field in izip(self.query.related_select_cols, self.query.related_select_fields): + r = self.get_field_select(field, table, col) + if with_aliases and col in col_aliases: + c_alias = 'Col%d' % len(col_aliases) + result.append('%s AS %s' % (r, c_alias)) + aliases.add(c_alias) + col_aliases.add(c_alias) + else: + result.append(r) + aliases.add(r) + col_aliases.add(col) + + self._select_aliases = aliases + return result + + def get_default_columns(self, with_aliases=False, col_aliases=None, + start_alias=None, opts=None, as_pairs=False): + """ + Computes the default columns for selecting every field in the base + model. Will sometimes be called to pull in related models (e.g. via + select_related), in which case "opts" and "start_alias" will be given + to provide a starting point for the traversal. + + Returns a list of strings, quoted appropriately for use in SQL + directly, as well as a set of aliases used in the select statement (if + 'as_pairs' is True, returns a list of (alias, col_name) pairs instead + of strings as the first component and None as the second component). + + This routine is overridden from Query to handle customized selection of + geometry columns. + """ + result = [] + if opts is None: + opts = self.query.model._meta + aliases = set() + only_load = self.deferred_to_columns() + # Skip all proxy to the root proxied model + proxied_model = get_proxied_model(opts) + + if start_alias: + seen = {None: start_alias} + for field, model in opts.get_fields_with_model(): + if start_alias: + try: + alias = seen[model] + except KeyError: + if model is proxied_model: + alias = start_alias + else: + link_field = opts.get_ancestor_link(model) + alias = self.query.join((start_alias, model._meta.db_table, + link_field.column, model._meta.pk.column)) + seen[model] = alias + else: + # If we're starting from the base model of the queryset, the + # aliases will have already been set up in pre_sql_setup(), so + # we can save time here. + alias = self.query.included_inherited_models[model] + table = self.query.alias_map[alias][TABLE_NAME] + if table in only_load and field.column not in only_load[table]: + continue + if as_pairs: + result.append((alias, field.column)) + aliases.add(alias) + continue + # This part of the function is customized for GeoQuery. We + # see if there was any custom selection specified in the + # dictionary, and set up the selection format appropriately. + field_sel = self.get_field_select(field, alias) + if with_aliases and field.column in col_aliases: + c_alias = 'Col%d' % len(col_aliases) + result.append('%s AS %s' % (field_sel, c_alias)) + col_aliases.add(c_alias) + aliases.add(c_alias) + else: + r = field_sel + result.append(r) + aliases.add(r) + if with_aliases: + col_aliases.add(field.column) + return result, aliases + + def resolve_columns(self, row, fields=()): + """ + This routine is necessary so that distances and geometries returned + from extra selection SQL get resolved appropriately into Python + objects. + """ + values = [] + aliases = self.query.extra_select.keys() + if self.query.aggregates: + # If we have an aggregate annotation, must extend the aliases + # so their corresponding row values are included. + aliases.extend([None for i in xrange(len(self.query.aggregates))]) + + # Have to set a starting row number offset that is used for + # determining the correct starting row index -- needed for + # doing pagination with Oracle. + rn_offset = 0 + if self.connection.ops.oracle: + if self.query.high_mark is not None or self.query.low_mark: rn_offset = 1 + index_start = rn_offset + len(aliases) + + # Converting any extra selection values (e.g., geometries and + # distance objects added by GeoQuerySet methods). + values = [self.query.convert_values(v, + self.query.extra_select_fields.get(a, None), + self.connection) + for v, a in izip(row[rn_offset:index_start], aliases)] + if self.connection.ops.oracle or getattr(self.query, 'geo_values', False): + # We resolve the rest of the columns if we're on Oracle or if + # the `geo_values` attribute is defined. + for value, field in map(None, row[index_start:], fields): + values.append(self.query.convert_values(value, field, connection=self.connection)) + else: + values.extend(row[index_start:]) + return tuple(values) + + #### Routines unique to GeoQuery #### + def get_extra_select_format(self, alias): + sel_fmt = '%s' + if alias in self.query.custom_select: + sel_fmt = sel_fmt % self.query.custom_select[alias] + return sel_fmt + + def get_field_select(self, field, alias=None, column=None): + """ + Returns the SELECT SQL string for the given field. Figures out + if any custom selection SQL is needed for the column The `alias` + keyword may be used to manually specify the database table where + the column exists, if not in the model associated with this + `GeoQuery`. Similarly, `column` may be used to specify the exact + column name, rather than using the `column` attribute on `field`. + """ + sel_fmt = self.get_select_format(field) + if field in self.query.custom_select: + field_sel = sel_fmt % self.query.custom_select[field] + else: + field_sel = sel_fmt % self._field_column(field, alias, column) + return field_sel + + def get_select_format(self, fld): + """ + Returns the selection format string, depending on the requirements + of the spatial backend. For example, Oracle and MySQL require custom + selection formats in order to retrieve geometries in OGC WKT. For all + other fields a simple '%s' format string is returned. + """ + if self.connection.ops.select and hasattr(fld, 'geom_type'): + # This allows operations to be done on fields in the SELECT, + # overriding their values -- used by the Oracle and MySQL + # spatial backends to get database values as WKT, and by the + # `transform` method. + sel_fmt = self.connection.ops.select + + # Because WKT doesn't contain spatial reference information, + # the SRID is prefixed to the returned WKT to ensure that the + # transformed geometries have an SRID different than that of the + # field -- this is only used by `transform` for Oracle and + # SpatiaLite backends. + if self.query.transformed_srid and ( self.connection.ops.oracle or + self.connection.ops.spatialite ): + sel_fmt = "'SRID=%d;'||%s" % (self.query.transformed_srid, sel_fmt) + else: + sel_fmt = '%s' + return sel_fmt + + # Private API utilities, subject to change. + def _field_column(self, field, table_alias=None, column=None): + """ + Helper function that returns the database column for the given field. + The table and column are returned (quoted) in the proper format, e.g., + `"geoapp_city"."point"`. If `table_alias` is not specified, the + database table associated with the model of this `GeoQuery` will be + used. If `column` is specified, it will be used instead of the value + in `field.column`. + """ + if table_alias is None: table_alias = self.query.model._meta.db_table + return "%s.%s" % (self.quote_name_unless_alias(table_alias), + self.connection.ops.quote_name(column or field.column)) + +class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler): + pass + +class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler): + pass + +class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler): + pass + +class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler): + pass + +class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler): + pass diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/sql/conversion.py --- a/web/lib/django/contrib/gis/db/models/sql/conversion.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/sql/conversion.py Tue May 25 02:43:45 2010 +0200 @@ -2,15 +2,13 @@ This module holds simple classes used by GeoQuery.convert_values to convert geospatial values from the database. """ -from django.contrib.gis.db.backend import SpatialBackend class BaseField(object): + empty_strings_allowed = True def get_internal_type(self): "Overloaded method so OracleQuery.convert_values doesn't balk." return None -if SpatialBackend.oracle: BaseField.empty_strings_allowed = False - class AreaField(BaseField): "Wrapper for Area values." def __init__(self, area_att): diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/sql/query.py --- a/web/lib/django/contrib/gis/db/models/sql/query.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/sql/query.py Tue May 25 02:43:45 2010 +0200 @@ -1,21 +1,25 @@ -from itertools import izip +from django.db import connections from django.db.models.query import sql -from django.db.models.fields.related import ForeignKey -from django.contrib.gis.db.backend import SpatialBackend from django.contrib.gis.db.models.fields import GeometryField -from django.contrib.gis.db.models.sql import aggregates as gis_aggregates_module +from django.contrib.gis.db.models.sql import aggregates as gis_aggregates from django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField from django.contrib.gis.db.models.sql.where import GeoWhereNode +from django.contrib.gis.geometry.backend import Geometry from django.contrib.gis.measure import Area, Distance -# Valid GIS query types. -ALL_TERMS = sql.constants.QUERY_TERMS.copy() -ALL_TERMS.update(SpatialBackend.gis_terms) -# Pulling out other needed constants/routines to avoid attribute lookups. -TABLE_NAME = sql.constants.TABLE_NAME -get_proxied_model = sql.query.get_proxied_model +ALL_TERMS = dict([(x, None) for x in ( + 'bbcontains', 'bboverlaps', 'contained', 'contains', + 'contains_properly', 'coveredby', 'covers', 'crosses', 'disjoint', + 'distance_gt', 'distance_gte', 'distance_lt', 'distance_lte', + 'dwithin', 'equals', 'exact', + 'intersects', 'overlaps', 'relate', 'same_as', 'touches', 'within', + 'left', 'right', 'overlaps_left', 'overlaps_right', + 'overlaps_above', 'overlaps_below', + 'strictly_above', 'strictly_below' + )]) +ALL_TERMS.update(sql.constants.QUERY_TERMS) class GeoQuery(sql.Query): """ @@ -23,11 +27,13 @@ """ # Overridding the valid query terms. query_terms = ALL_TERMS - aggregates_module = gis_aggregates_module + aggregates_module = gis_aggregates + + compiler = 'GeoSQLCompiler' #### Methods overridden from the base Query class #### - def __init__(self, model, conn): - super(GeoQuery, self).__init__(model, conn, where=GeoWhereNode) + def __init__(self, model, where=GeoWhereNode): + super(GeoQuery, self).__init__(model, where) # The following attributes are customized for the GeoQuerySet. # The GeoWhereNode and SpatialBackend classes contain backend-specific # routines and functions. @@ -35,13 +41,6 @@ self.transformed_srid = None self.extra_select_fields = {} - if SpatialBackend.oracle: - # Have to override this so that GeoQuery, instead of OracleQuery, - # is returned when unpickling. - def __reduce__(self): - callable, args, data = super(GeoQuery, self).__reduce__() - return (unpickle_geoquery, (), data) - def clone(self, *args, **kwargs): obj = super(GeoQuery, self).clone(*args, **kwargs) # Customized selection dictionary and transformed srid flag have @@ -51,286 +50,57 @@ obj.extra_select_fields = self.extra_select_fields.copy() return obj - def get_columns(self, with_aliases=False): - """ - Return the list of columns to use in the select statement. If no - columns have been specified, returns all columns relating to fields in - the model. - - If 'with_aliases' is true, any column names that are duplicated - (without the table names) are given unique aliases. This is needed in - some cases to avoid ambiguitity with nested queries. - - This routine is overridden from Query to handle customized selection of - geometry columns. - """ - qn = self.quote_name_unless_alias - qn2 = self.connection.ops.quote_name - result = ['(%s) AS %s' % (self.get_extra_select_format(alias) % col[0], qn2(alias)) - for alias, col in self.extra_select.iteritems()] - aliases = set(self.extra_select.keys()) - if with_aliases: - col_aliases = aliases.copy() - else: - col_aliases = set() - if self.select: - only_load = self.deferred_to_columns() - # This loop customized for GeoQuery. - for col, field in izip(self.select, self.select_fields): - if isinstance(col, (list, tuple)): - alias, column = col - table = self.alias_map[alias][TABLE_NAME] - if table in only_load and col not in only_load[table]: - continue - r = self.get_field_select(field, alias, column) - if with_aliases: - if col[1] in col_aliases: - c_alias = 'Col%d' % len(col_aliases) - result.append('%s AS %s' % (r, c_alias)) - aliases.add(c_alias) - col_aliases.add(c_alias) - else: - result.append('%s AS %s' % (r, qn2(col[1]))) - aliases.add(r) - col_aliases.add(col[1]) - else: - result.append(r) - aliases.add(r) - col_aliases.add(col[1]) - else: - result.append(col.as_sql(quote_func=qn)) - - if hasattr(col, 'alias'): - aliases.add(col.alias) - col_aliases.add(col.alias) - - elif self.default_cols: - cols, new_aliases = self.get_default_columns(with_aliases, - col_aliases) - result.extend(cols) - aliases.update(new_aliases) - - result.extend([ - '%s%s' % ( - self.get_extra_select_format(alias) % aggregate.as_sql(quote_func=qn), - alias is not None and ' AS %s' % alias or '' - ) - for alias, aggregate in self.aggregate_select.items() - ]) - - # This loop customized for GeoQuery. - for (table, col), field in izip(self.related_select_cols, self.related_select_fields): - r = self.get_field_select(field, table, col) - if with_aliases and col in col_aliases: - c_alias = 'Col%d' % len(col_aliases) - result.append('%s AS %s' % (r, c_alias)) - aliases.add(c_alias) - col_aliases.add(c_alias) - else: - result.append(r) - aliases.add(r) - col_aliases.add(col) - - self._select_aliases = aliases - return result - - def get_default_columns(self, with_aliases=False, col_aliases=None, - start_alias=None, opts=None, as_pairs=False): - """ - Computes the default columns for selecting every field in the base - model. Will sometimes be called to pull in related models (e.g. via - select_related), in which case "opts" and "start_alias" will be given - to provide a starting point for the traversal. - - Returns a list of strings, quoted appropriately for use in SQL - directly, as well as a set of aliases used in the select statement (if - 'as_pairs' is True, returns a list of (alias, col_name) pairs instead - of strings as the first component and None as the second component). - - This routine is overridden from Query to handle customized selection of - geometry columns. - """ - result = [] - if opts is None: - opts = self.model._meta - aliases = set() - only_load = self.deferred_to_columns() - # Skip all proxy to the root proxied model - proxied_model = get_proxied_model(opts) - - if start_alias: - seen = {None: start_alias} - for field, model in opts.get_fields_with_model(): - if start_alias: - try: - alias = seen[model] - except KeyError: - if model is proxied_model: - alias = start_alias - else: - link_field = opts.get_ancestor_link(model) - alias = self.join((start_alias, model._meta.db_table, - link_field.column, model._meta.pk.column)) - seen[model] = alias - else: - # If we're starting from the base model of the queryset, the - # aliases will have already been set up in pre_sql_setup(), so - # we can save time here. - alias = self.included_inherited_models[model] - table = self.alias_map[alias][TABLE_NAME] - if table in only_load and field.column not in only_load[table]: - continue - if as_pairs: - result.append((alias, field.column)) - aliases.add(alias) - continue - # This part of the function is customized for GeoQuery. We - # see if there was any custom selection specified in the - # dictionary, and set up the selection format appropriately. - field_sel = self.get_field_select(field, alias) - if with_aliases and field.column in col_aliases: - c_alias = 'Col%d' % len(col_aliases) - result.append('%s AS %s' % (field_sel, c_alias)) - col_aliases.add(c_alias) - aliases.add(c_alias) - else: - r = field_sel - result.append(r) - aliases.add(r) - if with_aliases: - col_aliases.add(field.column) - return result, aliases - - def resolve_columns(self, row, fields=()): - """ - This routine is necessary so that distances and geometries returned - from extra selection SQL get resolved appropriately into Python - objects. - """ - values = [] - aliases = self.extra_select.keys() - if self.aggregates: - # If we have an aggregate annotation, must extend the aliases - # so their corresponding row values are included. - aliases.extend([None for i in xrange(len(self.aggregates))]) - - # Have to set a starting row number offset that is used for - # determining the correct starting row index -- needed for - # doing pagination with Oracle. - rn_offset = 0 - if SpatialBackend.oracle: - if self.high_mark is not None or self.low_mark: rn_offset = 1 - index_start = rn_offset + len(aliases) - - # Converting any extra selection values (e.g., geometries and - # distance objects added by GeoQuerySet methods). - values = [self.convert_values(v, self.extra_select_fields.get(a, None)) - for v, a in izip(row[rn_offset:index_start], aliases)] - if SpatialBackend.oracle or getattr(self, 'geo_values', False): - # We resolve the rest of the columns if we're on Oracle or if - # the `geo_values` attribute is defined. - for value, field in izip(row[index_start:], fields): - values.append(self.convert_values(value, field)) - else: - values.extend(row[index_start:]) - return tuple(values) - - def convert_values(self, value, field): + def convert_values(self, value, field, connection): """ Using the same routines that Oracle does we can convert our extra selection objects into Geometry and Distance objects. TODO: Make converted objects 'lazy' for less overhead. """ - if SpatialBackend.oracle: + if connection.ops.oracle: # Running through Oracle's first. - value = super(GeoQuery, self).convert_values(value, field or GeomField()) + value = super(GeoQuery, self).convert_values(value, field or GeomField(), connection) - if isinstance(field, DistanceField): + if value is None: + # Output from spatial function is NULL (e.g., called + # function on a geometry field with NULL value). + pass + elif isinstance(field, DistanceField): # Using the field's distance attribute, can instantiate # `Distance` with the right context. value = Distance(**{field.distance_att : value}) elif isinstance(field, AreaField): value = Area(**{field.area_att : value}) elif isinstance(field, (GeomField, GeometryField)) and value: - value = SpatialBackend.Geometry(value) + value = Geometry(value) return value - def resolve_aggregate(self, value, aggregate): + def get_aggregation(self, using): + # Remove any aggregates marked for reduction from the subquery + # and move them to the outer AggregateQuery. + connection = connections[using] + for alias, aggregate in self.aggregate_select.items(): + if isinstance(aggregate, gis_aggregates.GeoAggregate): + if not getattr(aggregate, 'is_extent', False) or connection.ops.oracle: + self.extra_select_fields[alias] = GeomField() + return super(GeoQuery, self).get_aggregation(using) + + def resolve_aggregate(self, value, aggregate, connection): """ Overridden from GeoQuery's normalize to handle the conversion of GeoAggregate objects. """ if isinstance(aggregate, self.aggregates_module.GeoAggregate): if aggregate.is_extent: - return self.aggregates_module.convert_extent(value) + if aggregate.is_extent == '3D': + return connection.ops.convert_extent3d(value) + else: + return connection.ops.convert_extent(value) else: - return self.aggregates_module.convert_geom(value, aggregate.source) - else: - return super(GeoQuery, self).resolve_aggregate(value, aggregate) - - #### Routines unique to GeoQuery #### - def get_extra_select_format(self, alias): - sel_fmt = '%s' - if alias in self.custom_select: - sel_fmt = sel_fmt % self.custom_select[alias] - return sel_fmt - - def get_field_select(self, field, alias=None, column=None): - """ - Returns the SELECT SQL string for the given field. Figures out - if any custom selection SQL is needed for the column The `alias` - keyword may be used to manually specify the database table where - the column exists, if not in the model associated with this - `GeoQuery`. Similarly, `column` may be used to specify the exact - column name, rather than using the `column` attribute on `field`. - """ - sel_fmt = self.get_select_format(field) - if field in self.custom_select: - field_sel = sel_fmt % self.custom_select[field] + return connection.ops.convert_geom(value, aggregate.source) else: - field_sel = sel_fmt % self._field_column(field, alias, column) - return field_sel - - def get_select_format(self, fld): - """ - Returns the selection format string, depending on the requirements - of the spatial backend. For example, Oracle and MySQL require custom - selection formats in order to retrieve geometries in OGC WKT. For all - other fields a simple '%s' format string is returned. - """ - if SpatialBackend.select and hasattr(fld, 'geom_type'): - # This allows operations to be done on fields in the SELECT, - # overriding their values -- used by the Oracle and MySQL - # spatial backends to get database values as WKT, and by the - # `transform` method. - sel_fmt = SpatialBackend.select - - # Because WKT doesn't contain spatial reference information, - # the SRID is prefixed to the returned WKT to ensure that the - # transformed geometries have an SRID different than that of the - # field -- this is only used by `transform` for Oracle and - # SpatiaLite backends. - if self.transformed_srid and ( SpatialBackend.oracle or - SpatialBackend.spatialite ): - sel_fmt = "'SRID=%d;'||%s" % (self.transformed_srid, sel_fmt) - else: - sel_fmt = '%s' - return sel_fmt + return super(GeoQuery, self).resolve_aggregate(value, aggregate, connection) # Private API utilities, subject to change. - def _field_column(self, field, table_alias=None, column=None): - """ - Helper function that returns the database column for the given field. - The table and column are returned (quoted) in the proper format, e.g., - `"geoapp_city"."point"`. If `table_alias` is not specified, the - database table associated with the model of this `GeoQuery` will be - used. If `column` is specified, it will be used instead of the value - in `field.column`. - """ - if table_alias is None: table_alias = self.model._meta.db_table - return "%s.%s" % (self.quote_name_unless_alias(table_alias), - self.connection.ops.quote_name(column or field.column)) - def _geo_field(self, field_name=None): """ Returns the first Geometry field encountered; or specified via the @@ -347,12 +117,3 @@ # Otherwise, check by the given field name -- which may be # a lookup to a _related_ geographic field. return GeoWhereNode._check_geo_field(self.model._meta, field_name) - -if SpatialBackend.oracle: - def unpickle_geoquery(): - """ - Utility function, called by Python's unpickling machinery, that handles - unpickling of GeoQuery subclasses of OracleQuery. - """ - return GeoQuery.__new__(GeoQuery) - unpickle_geoquery.__safe_for_unpickling__ = True diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/sql/subqueries.py --- a/web/lib/django/contrib/gis/db/models/sql/subqueries.py Wed May 19 17:43:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -from django.contrib.gis.db.backend import SpatialBackend -from django.db.models.query import insert_query - -if SpatialBackend.oracle: - from django.db import connection - from django.db.models.sql.subqueries import InsertQuery - - class OracleGeoInsertQuery(InsertQuery): - def insert_values(self, insert_values, raw_values=False): - """ - This routine is overloaded from InsertQuery so that no parameter is - passed into cx_Oracle for NULL geometries. The reason is that - cx_Oracle has no way to bind Oracle object values (like - MDSYS.SDO_GEOMETRY). - """ - placeholders, values = [], [] - for field, val in insert_values: - if hasattr(field, 'get_placeholder'): - ph = field.get_placeholder(val) - else: - ph = '%s' - - placeholders.append(ph) - self.columns.append(field.column) - - # If 'NULL' for the placeholder, omit appending None - # to the values list (which is used for db params). - if not ph == 'NULL': - values.append(val) - if raw_values: - self.values.extend(values) - else: - self.params += tuple(values) - self.values.extend(placeholders) - - def insert_query(model, values, return_id=False, raw_values=False): - query = OracleGeoInsertQuery(model, connection) - query.insert_values(values, raw_values) - return query.execute_sql(return_id) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/db/models/sql/where.py --- a/web/lib/django/contrib/gis/db/models/sql/where.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/db/models/sql/where.py Tue May 25 02:43:45 2010 +0200 @@ -1,23 +1,31 @@ -from django.db import connection from django.db.models.fields import Field, FieldDoesNotExist from django.db.models.sql.constants import LOOKUP_SEP from django.db.models.sql.expressions import SQLEvaluator -from django.db.models.sql.where import WhereNode -from django.contrib.gis.db.backend import get_geo_where_clause, SpatialBackend +from django.db.models.sql.where import Constraint, WhereNode from django.contrib.gis.db.models.fields import GeometryField -qn = connection.ops.quote_name -class GeoAnnotation(object): +class GeoConstraint(Constraint): + """ + This subclass overrides `process` to better handle geographic SQL + construction. """ - The annotation used for GeometryFields; basically a placeholder - for metadata needed by the `get_geo_where_clause` of the spatial - backend. - """ - def __init__(self, field, value, where): - self.geodetic = field.geodetic - self.geom_type = field.geom_type - self.value = value - self.where = tuple(where) + def __init__(self, init_constraint): + self.alias = init_constraint.alias + self.col = init_constraint.col + self.field = init_constraint.field + + def process(self, lookup_type, value, connection): + if isinstance(value, SQLEvaluator): + # Make sure the F Expression destination field exists, and + # set an `srid` attribute with the same as that of the + # destination. + geo_fld = GeoWhereNode._check_geo_field(value.opts, value.expression.name) + if not geo_fld: + raise ValueError('No geographic field found in expression.') + value.srid = geo_fld.srid + db_type = self.field.db_type(connection=connection) + params = self.field.get_db_prep_lookup(lookup_type, value, connection=connection) + return (self.alias, self.col, db_type), params class GeoWhereNode(WhereNode): """ @@ -25,81 +33,26 @@ these are tied to the GeoQuery class that created it. """ def add(self, data, connector): - """ - This is overridden from the regular WhereNode to handle the - peculiarties of GeometryFields, because they need a special - annotation object that contains the spatial metadata from the - field to generate the spatial SQL. - """ - if not isinstance(data, (list, tuple)): - return super(WhereNode, self).add(data, connector) - - obj, lookup_type, value = data - col, field = obj.col, obj.field - - if not hasattr(field, "geom_type"): - # Not a geographic field, so call `WhereNode.add`. - return super(GeoWhereNode, self).add(data, connector) - else: - if isinstance(value, SQLEvaluator): - # Getting the geographic field to compare with from the expression. - geo_fld = self._check_geo_field(value.opts, value.expression.name) - if not geo_fld: - raise ValueError('No geographic field found in expression.') - - # Get the SRID of the geometry field that the expression was meant - # to operate on -- it's needed to determine whether transformation - # SQL is necessary. - srid = geo_fld.srid - - # Getting the quoted representation of the geometry column that - # the expression is operating on. - geo_col = '%s.%s' % tuple(map(qn, value.cols[value.expression])) + if isinstance(data, (list, tuple)): + obj, lookup_type, value = data + if ( isinstance(obj, Constraint) and + isinstance(obj.field, GeometryField) ): + data = (GeoConstraint(obj), lookup_type, value) + super(GeoWhereNode, self).add(data, connector) - # If it's in a different SRID, we'll need to wrap in - # transformation SQL. - if not srid is None and srid != field.srid and SpatialBackend.transform: - placeholder = '%s(%%s, %s)' % (SpatialBackend.transform, field.srid) - else: - placeholder = '%s' - - # Setting these up as if we had called `field.get_db_prep_lookup()`. - where = [placeholder % geo_col] - params = () - else: - # `GeometryField.get_db_prep_lookup` returns a where clause - # substitution array in addition to the parameters. - where, params = field.get_db_prep_lookup(lookup_type, value) - - # The annotation will be a `GeoAnnotation` object that - # will contain the necessary geometry field metadata for - # the `get_geo_where_clause` to construct the appropriate - # spatial SQL when `make_atom` is called. - annotation = GeoAnnotation(field, value, where) - return super(WhereNode, self).add(((obj.alias, col, field.db_type()), lookup_type, annotation, params), connector) - - def make_atom(self, child, qn): - obj, lookup_type, value_annot, params = child - - if isinstance(value_annot, GeoAnnotation): - if lookup_type in SpatialBackend.gis_terms: - # Getting the geographic where clause; substitution parameters - # will be populated in the GeoFieldSQL object returned by the - # GeometryField. - alias, col, db_type = obj - gwc = get_geo_where_clause(alias, col, lookup_type, value_annot) - return gwc % value_annot.where, params - else: - raise TypeError('Invalid lookup type: %r' % lookup_type) + def make_atom(self, child, qn, connection): + lvalue, lookup_type, value_annot, params_or_value = child + if isinstance(lvalue, GeoConstraint): + data, params = lvalue.process(lookup_type, params_or_value, connection) + spatial_sql = connection.ops.spatial_lookup_sql(data, lookup_type, params_or_value, lvalue.field, qn) + return spatial_sql, params else: - # If not a GeometryField, call the `make_atom` from the - # base class. - return super(GeoWhereNode, self).make_atom(child, qn) + return super(GeoWhereNode, self).make_atom(child, qn, connection) @classmethod def _check_geo_field(cls, opts, lookup): """ - Utility for checking the given lookup with the given model options. + Utility for checking the given lookup with the given model options. The lookup is a string either specifying the geographic field, e.g. 'point, 'the_geom', or a related lookup on a geographic field like 'address__point'. @@ -121,7 +74,7 @@ # If the field list is still around, then it means that the # lookup was for a geometry field across a relationship -- # thus we keep on getting the related model options and the - # model field associated with the next field in the list + # model field associated with the next field in the list # until there's no more left. while len(field_list): opts = geo_fld.rel.to._meta diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/__init__.py --- a/web/lib/django/contrib/gis/gdal/__init__.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -13,7 +13,7 @@ Envelope: A ctypes structure for bounding boxes (GDAL library not required). - OGRGeometry: Layer for accessing OGR Geometry objects. + OGRGeometry: Object for accessing OGR Geometry functionality. OGRGeomType: A class for representing the different OGR Geometry types (GDAL library not required). @@ -31,29 +31,24 @@ to a non-existant file location (e.g., `GDAL_LIBRARY_PATH='/null/path'`; setting to None/False/'' will not work as a string must be given). """ -import sys - # Attempting to import objects that depend on the GDAL library. The # HAS_GDAL flag will be set to True if the library is present on # the system. try: from django.contrib.gis.gdal.driver import Driver from django.contrib.gis.gdal.datasource import DataSource - from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, gdal_release_date + from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, gdal_release_date, GEOJSON, GDAL_VERSION from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform - from django.contrib.gis.gdal.geometries import OGRGeometry, GEOJSON + from django.contrib.gis.gdal.geometries import OGRGeometry HAS_GDAL = True except: HAS_GDAL, GEOJSON = False, False -# The envelope, error, and geomtype modules do not actually require the -# GDAL library, but still nead at least Python 2.4 and ctypes. -PYTHON23 = sys.version_info[0] == 2 and sys.version_info[1] == 3 -if not PYTHON23: - try: - from django.contrib.gis.gdal.envelope import Envelope - from django.contrib.gis.gdal.error import check_err, OGRException, OGRIndexError, SRSException - from django.contrib.gis.gdal.geomtype import OGRGeomType - except ImportError: - # No ctypes, but don't raise an exception. - pass +try: + from django.contrib.gis.gdal.envelope import Envelope +except ImportError: + # No ctypes, but don't raise an exception. + pass + +from django.contrib.gis.gdal.error import check_err, OGRException, OGRIndexError, SRSException +from django.contrib.gis.gdal.geomtype import OGRGeomType diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/base.py --- a/web/lib/django/contrib/gis/gdal/base.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/base.py Tue May 25 02:43:45 2010 +0200 @@ -24,7 +24,7 @@ def _set_ptr(self, ptr): # Only allow the pointer to be set with pointers of the # compatible type or None (NULL). - if isinstance(ptr, int): + if isinstance(ptr, (int, long)): self._ptr = self.ptr_type(ptr) elif isinstance(ptr, (self.ptr_type, NoneType)): self._ptr = ptr diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/geometries.py --- a/web/lib/django/contrib/gis/gdal/geometries.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/geometries.py Tue May 25 02:43:45 2010 +0200 @@ -29,7 +29,7 @@ +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs >>> print mpnt MULTIPOINT (-89.999930378602485 29.999797886557641,-89.999930378602485 29.999797886557641) - + The OGRGeomType class is to make it easy to specify an OGR geometry type: >>> from django.contrib.gis.gdal import OGRGeomType >>> gt1 = OGRGeomType(3) # Using an integer for the type @@ -39,7 +39,7 @@ True """ # Python library requisites. -import re, sys +import sys from binascii import a2b_hex from ctypes import byref, string_at, c_char_p, c_double, c_ubyte, c_void_p @@ -48,22 +48,20 @@ from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException from django.contrib.gis.gdal.geomtype import OGRGeomType +from django.contrib.gis.gdal.libgdal import GEOJSON, GDAL_VERSION from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform # Getting the ctypes prototype functions that interface w/the GDAL C library. from django.contrib.gis.gdal.prototypes import geom as capi, srs as srs_api -GEOJSON = capi.GEOJSON + +# For recognizing geometry input. +from django.contrib.gis.geometry.regex import hex_regex, wkt_regex, json_regex # For more information, see the OGR C API source code: # http://www.gdal.org/ogr/ogr__api_8h.html # # The OGR_G_* routines are relevant here. -# Regular expressions for recognizing HEXEWKB and WKT. -hex_regex = re.compile(r'^[0-9A-F]+$', re.I) -wkt_regex = re.compile(r'^(?PPOINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+$', re.I) -json_regex = re.compile(r'^(\s+)?\{[\s\w,\[\]\{\}\-\."\':]+\}(\s+)?$') - #### OGRGeometry Class #### class OGRGeometry(GDALBase): "Generally encapsulates an OGR geometry." @@ -78,7 +76,7 @@ geom_input = buffer(a2b_hex(geom_input.upper())) str_instance = False - # Constructing the geometry, + # Constructing the geometry, if str_instance: # Checking if unicode if isinstance(geom_input, unicode): @@ -88,13 +86,16 @@ wkt_m = wkt_regex.match(geom_input) json_m = json_regex.match(geom_input) if wkt_m: + if wkt_m.group('srid'): + # If there's EWKT, set the SRS w/value of the SRID. + srs = int(wkt_m.group('srid')) if wkt_m.group('type').upper() == 'LINEARRING': # OGR_G_CreateFromWkt doesn't work with LINEARRING WKT. # See http://trac.osgeo.org/gdal/ticket/1992. g = capi.create_geom(OGRGeomType(wkt_m.group('type')).num) - capi.import_wkt(g, byref(c_char_p(geom_input))) + capi.import_wkt(g, byref(c_char_p(wkt_m.group('wkt')))) else: - g = capi.from_wkt(byref(c_char_p(geom_input)), None, byref(c_void_p())) + g = capi.from_wkt(byref(c_char_p(wkt_m.group('wkt'))), None, byref(c_void_p())) elif json_m: if GEOJSON: g = capi.from_json(geom_input) @@ -129,16 +130,32 @@ # Setting the class depending upon the OGR Geometry Type self.__class__ = GEO_CLASSES[self.geom_type.num] + def __del__(self): + "Deletes this Geometry." + if self._ptr: capi.destroy_geom(self._ptr) + + # Pickle routines + def __getstate__(self): + srs = self.srs + if srs: + srs = srs.wkt + else: + srs = None + return str(self.wkb), srs + + def __setstate__(self, state): + wkb, srs = state + ptr = capi.from_wkb(wkb, None, byref(c_void_p()), len(wkb)) + if not ptr: raise OGRException('Invalid OGRGeometry loaded from pickled state.') + self.ptr = ptr + self.srs = srs + @classmethod - def from_bbox(cls, bbox): + def from_bbox(cls, bbox): "Constructs a Polygon from a bounding box (4-tuple)." x0, y0, x1, y1 = bbox return OGRGeometry( 'POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))' % ( x0, y0, x0, y1, x1, y1, x1, y0, x0, y0) ) - - def __del__(self): - "Deletes this Geometry." - if self._ptr: capi.destroy_geom(self._ptr) ### Geometry set-like operations ### # g = g1 | g2 @@ -163,11 +180,14 @@ def __eq__(self, other): "Is this Geometry equal to the other?" - return self.equals(other) + if isinstance(other, OGRGeometry): + return self.equals(other) + else: + return False def __ne__(self, other): "Tests for inequality." - return not self.equals(other) + return not (self == other) def __str__(self): "WKT is used for the string representation." @@ -179,10 +199,25 @@ "Returns 0 for points, 1 for lines, and 2 for surfaces." return capi.get_dims(self.ptr) - @property - def coord_dim(self): + def _get_coord_dim(self): "Returns the coordinate dimension of the Geometry." - return capi.get_coord_dims(self.ptr) + if isinstance(self, GeometryCollection) and GDAL_VERSION < (1, 5, 2): + # On GDAL versions prior to 1.5.2, there exists a bug in which + # the coordinate dimension of geometry collections is always 2: + # http://trac.osgeo.org/gdal/ticket/2334 + # Here we workaround by returning the coordinate dimension of the + # first geometry in the collection instead. + if len(self): + return capi.get_coord_dim(capi.get_geom_ref(self.ptr, 0)) + return capi.get_coord_dim(self.ptr) + + def _set_coord_dim(self, dim): + "Sets the coordinate dimension of this Geometry." + if not dim in (2, 3): + raise ValueError('Geometry dimension must be either 2 or 3') + capi.set_coord_dim(self.ptr, dim) + + coord_dim = property(_get_coord_dim, _set_coord_dim) @property def geom_count(self): @@ -207,13 +242,7 @@ @property def geom_type(self): "Returns the Type for this Geometry." - try: - return OGRGeomType(capi.get_geom_type(self.ptr)) - except OGRException: - # VRT datasources return an invalid geometry type - # number, but a valid name -- we'll try that instead. - # See: http://trac.osgeo.org/gdal/ticket/2491 - return OGRGeomType(capi.get_geom_name(self.ptr)) + return OGRGeomType(capi.get_geom_type(self.ptr)) @property def geom_name(self): @@ -237,7 +266,7 @@ return self.envelope.tuple #### SpatialReference-related Properties #### - + # The SRS property def _get_srs(self): "Returns the Spatial Reference for this Geometry." @@ -249,11 +278,15 @@ def _set_srs(self, srs): "Sets the SpatialReference for this geometry." + # Do not have to clone the `SpatialReference` object pointer because + # when it is assigned to this `OGRGeometry` it's internal OGR + # reference count is incremented, and will likewise be released + # (decremented) when this geometry's destructor is called. if isinstance(srs, SpatialReference): - srs_ptr = srs_api.clone_srs(srs.ptr) + srs_ptr = srs.ptr elif isinstance(srs, (int, long, basestring)): sr = SpatialReference(srs) - srs_ptr = srs_api.clone_srs(sr.ptr) + srs_ptr = sr.ptr else: raise TypeError('Cannot assign spatial reference with object of type: %s' % type(srs)) capi.assign_srs(self.ptr, srs_ptr) @@ -298,7 +331,7 @@ Returns the GeoJSON representation of this Geometry (requires GDAL 1.5+). """ - if GEOJSON: + if GEOJSON: return capi.to_json(self.ptr) else: raise NotImplementedError('GeoJSON output only supported on GDAL 1.5+.') @@ -335,7 +368,16 @@ def wkt(self): "Returns the WKT representation of the Geometry." return capi.to_wkt(self.ptr, byref(c_char_p())) - + + @property + def ewkt(self): + "Returns the EWKT representation of the Geometry." + srs = self.srs + if srs and srs.srid: + return 'SRID=%s;%s' % (srs.srid, self.wkt) + else: + return self.wkt + #### Geometry Methods #### def clone(self): "Clones this OGR Geometry." @@ -363,6 +405,17 @@ klone = self.clone() klone.transform(coord_trans) return klone + + # Have to get the coordinate dimension of the original geometry + # so it can be used to reset the transformed geometry's dimension + # afterwards. This is done because of GDAL bug (in versions prior + # to 1.7) that turns geometries 3D after transformation, see: + # http://trac.osgeo.org/gdal/changeset/17792 + if GDAL_VERSION < (1, 7): + orig_dim = self.coord_dim + + # Depending on the input type, use the appropriate OGR routine + # to perform the transformation. if isinstance(coord_trans, CoordTransform): capi.geom_transform(self.ptr, coord_trans.ptr) elif isinstance(coord_trans, SpatialReference): @@ -371,7 +424,22 @@ sr = SpatialReference(coord_trans) capi.geom_transform_to(self.ptr, sr.ptr) else: - raise TypeError('Transform only accepts CoordTransform, SpatialReference, string, and integer objects.') + raise TypeError('Transform only accepts CoordTransform, ' + 'SpatialReference, string, and integer objects.') + + # Setting with original dimension, see comment above. + if GDAL_VERSION < (1, 7): + if isinstance(self, GeometryCollection): + # With geometry collections have to set dimension on + # each internal geometry reference, as the collection + # dimension isn't affected. + for i in xrange(len(self)): + internal_ptr = capi.get_geom_ref(self.ptr, i) + if orig_dim != capi.get_coord_dim(internal_ptr): + capi.set_coord_dim(internal_ptr, orig_dim) + else: + if self.coord_dim != orig_dim: + self.coord_dim = orig_dim def transform_to(self, srs): "For backwards-compatibility." @@ -391,7 +459,7 @@ def intersects(self, other): "Returns True if this geometry intersects with the other." return self._topology(capi.ogr_intersects, other) - + def equals(self, other): "Returns True if this geometry is equivalent to the other." return self._topology(capi.ogr_equals, other) @@ -436,7 +504,7 @@ @property def convex_hull(self): """ - Returns the smallest convex Polygon that contains all the points in + Returns the smallest convex Polygon that contains all the points in this Geometry. """ return self._geomgen(capi.geom_convex_hull) @@ -456,7 +524,7 @@ return self._geomgen(capi.geom_intersection, other) def sym_difference(self, other): - """ + """ Returns a new geometry which is the symmetric difference of this geometry and the other. """ @@ -545,7 +613,7 @@ def y(self): "Returns the Y coordinates in a list." return self._listarr(capi.gety) - + @property def z(self): "Returns the Z coordinates in a list." @@ -610,7 +678,7 @@ raise OGRIndexError('index out of range: %s' % index) else: return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs) - + def __iter__(self): "Iterates over each Geometry." for i in xrange(self.geom_count): @@ -658,5 +726,12 @@ 5 : MultiLineString, 6 : MultiPolygon, 7 : GeometryCollection, - 101: LinearRing, + 101: LinearRing, + 1 + OGRGeomType.wkb25bit : Point, + 2 + OGRGeomType.wkb25bit : LineString, + 3 + OGRGeomType.wkb25bit : Polygon, + 4 + OGRGeomType.wkb25bit : MultiPoint, + 5 + OGRGeomType.wkb25bit : MultiLineString, + 6 + OGRGeomType.wkb25bit : MultiPolygon, + 7 + OGRGeomType.wkb25bit : GeometryCollection, } diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/geomtype.py --- a/web/lib/django/contrib/gis/gdal/geomtype.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/geomtype.py Tue May 25 02:43:45 2010 +0200 @@ -4,6 +4,8 @@ class OGRGeomType(object): "Encapulates OGR Geometry Types." + wkb25bit = -2147483648 + # Dictionary of acceptable OGRwkbGeometryType s and their string names. _types = {0 : 'Unknown', 1 : 'Point', @@ -15,6 +17,13 @@ 7 : 'GeometryCollection', 100 : 'None', 101 : 'LinearRing', + 1 + wkb25bit: 'Point25D', + 2 + wkb25bit: 'LineString25D', + 3 + wkb25bit: 'Polygon25D', + 4 + wkb25bit: 'MultiPoint25D', + 5 + wkb25bit : 'MultiLineString25D', + 6 + wkb25bit : 'MultiPolygon25D', + 7 + wkb25bit : 'GeometryCollection25D', } # Reverse type dictionary, keyed by lower-case of the name. _str_types = dict([(v.lower(), k) for k, v in _types.items()]) @@ -68,7 +77,7 @@ @property def django(self): "Returns the Django GeometryField for this OGR Type." - s = self.name + s = self.name.replace('25D', '') if s in ('LinearRing', 'None'): return None elif s == 'Unknown': diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/layer.py --- a/web/lib/django/contrib/gis/gdal/layer.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/layer.py Tue May 25 02:43:45 2010 +0200 @@ -1,5 +1,5 @@ # Needed ctypes routines -from ctypes import byref +from ctypes import c_double, byref # Other GDAL imports. from django.contrib.gis.gdal.base import GDALBase @@ -7,11 +7,12 @@ from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException from django.contrib.gis.gdal.feature import Feature from django.contrib.gis.gdal.field import OGRFieldTypes -from django.contrib.gis.gdal.geometries import OGRGeomType +from django.contrib.gis.gdal.geomtype import OGRGeomType +from django.contrib.gis.gdal.geometries import OGRGeometry from django.contrib.gis.gdal.srs import SpatialReference # GDAL ctypes function prototypes. -from django.contrib.gis.gdal.prototypes import ds as capi, srs as srs_api +from django.contrib.gis.gdal.prototypes import ds as capi, geom as geom_api, srs as srs_api # For more information, see the OGR C API source code: # http://www.gdal.org/ogr/ogr__api_8h.html @@ -156,6 +157,29 @@ return [capi.get_field_precision(capi.get_field_defn(self._ldefn, i)) for i in xrange(self.num_fields)] + def _get_spatial_filter(self): + try: + return OGRGeometry(geom_api.clone_geom(capi.get_spatial_filter(self.ptr))) + except OGRException: + return None + + def _set_spatial_filter(self, filter): + if isinstance(filter, OGRGeometry): + capi.set_spatial_filter(self.ptr, filter.ptr) + elif isinstance(filter, (tuple, list)): + if not len(filter) == 4: + raise ValueError('Spatial filter list/tuple must have 4 elements.') + # Map c_double onto params -- if a bad type is passed in it + # will be caught here. + xmin, ymin, xmax, ymax = map(c_double, filter) + capi.set_spatial_filter_rect(self.ptr, xmin, ymin, xmax, ymax) + elif filter is None: + capi.set_spatial_filter(self.ptr, None) + else: + raise TypeError('Spatial filter must be either an OGRGeometry instance, a 4-tuple, or None.') + + spatial_filter = property(_get_spatial_filter, _set_spatial_filter) + #### Layer Methods #### def get_fields(self, field_name): """ diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/libgdal.py --- a/web/lib/django/contrib/gis/gdal/libgdal.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/libgdal.py Tue May 25 02:43:45 2010 +0200 @@ -1,4 +1,4 @@ -import os, sys +import os, re, sys from ctypes import c_char_p, CDLL from ctypes.util import find_library from django.contrib.gis.gdal.error import OGRException @@ -81,3 +81,24 @@ d = date_type(yy, mm, dd) if date: return d else: return d.strftime('%Y/%m/%d') + +version_regex = re.compile(r'^(?P\d+)\.(?P\d+)(\.(?P\d+))?') +def gdal_version_info(): + ver = gdal_version() + m = version_regex.match(ver) + if not m: raise OGRException('Could not parse GDAL version string "%s"' % ver) + return dict([(key, m.group(key)) for key in ('major', 'minor', 'subminor')]) + +_verinfo = gdal_version_info() +GDAL_MAJOR_VERSION = int(_verinfo['major']) +GDAL_MINOR_VERSION = int(_verinfo['minor']) +GDAL_SUBMINOR_VERSION = _verinfo['subminor'] and int(_verinfo['subminor']) +GDAL_VERSION = (GDAL_MAJOR_VERSION, GDAL_MINOR_VERSION, GDAL_SUBMINOR_VERSION) +del _verinfo + +# GeoJSON support is available only in GDAL 1.5+. +if GDAL_VERSION >= (1, 5): + GEOJSON = True +else: + GEOJSON = False + diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/prototypes/ds.py --- a/web/lib/django/contrib/gis/gdal/prototypes/ds.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/prototypes/ds.py Tue May 25 02:43:45 2010 +0200 @@ -3,7 +3,7 @@ related data structures. OGR_Dr_*, OGR_DS_*, OGR_L_*, OGR_F_*, OGR_Fld_* routines are relevant here. """ -from ctypes import c_char_p, c_int, c_long, c_void_p, POINTER +from ctypes import c_char_p, c_double, c_int, c_long, c_void_p, POINTER from django.contrib.gis.gdal.envelope import OGREnvelope from django.contrib.gis.gdal.libgdal import lgdal from django.contrib.gis.gdal.prototypes.generation import \ @@ -38,6 +38,9 @@ get_next_feature = voidptr_output(lgdal.OGR_L_GetNextFeature, [c_void_p]) reset_reading = void_output(lgdal.OGR_L_ResetReading, [c_void_p], errcheck=False) test_capability = int_output(lgdal.OGR_L_TestCapability, [c_void_p, c_char_p]) +get_spatial_filter = geom_output(lgdal.OGR_L_GetSpatialFilter, [c_void_p]) +set_spatial_filter = void_output(lgdal.OGR_L_SetSpatialFilter, [c_void_p, c_void_p], errcheck=False) +set_spatial_filter_rect = void_output(lgdal.OGR_L_SetSpatialFilterRect, [c_void_p, c_double, c_double, c_double, c_double], errcheck=False) ### Feature Definition Routines ### get_fd_geom_type = int_output(lgdal.OGR_FD_GetGeomType, [c_void_p]) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/prototypes/errcheck.py --- a/web/lib/django/contrib/gis/gdal/prototypes/errcheck.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/prototypes/errcheck.py Tue May 25 02:43:45 2010 +0200 @@ -109,6 +109,8 @@ def check_pointer(result, func, cargs): "Makes sure the result pointer is valid." + if isinstance(result, (int, long)): + result = c_void_p(result) if bool(result): return result else: diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/prototypes/geom.py --- a/web/lib/django/contrib/gis/gdal/prototypes/geom.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/prototypes/geom.py Tue May 25 02:43:45 2010 +0200 @@ -1,19 +1,13 @@ +import re from datetime import date from ctypes import c_char, c_char_p, c_double, c_int, c_ubyte, c_void_p, POINTER from django.contrib.gis.gdal.envelope import OGREnvelope -from django.contrib.gis.gdal.libgdal import lgdal, gdal_version +from django.contrib.gis.gdal.libgdal import lgdal, GEOJSON from django.contrib.gis.gdal.prototypes.errcheck import check_bool, check_envelope from django.contrib.gis.gdal.prototypes.generation import \ const_string_output, double_output, geom_output, int_output, \ srs_output, string_output, void_output -# Some prototypes need to be aware of what version GDAL we have. -major, minor = map(int, gdal_version().split('.')[:2]) -if major <= 1 and minor <= 4: - GEOJSON = False -else: - GEOJSON = True - ### Generation routines specific to this module ### def env_func(f, argtypes): "For getting OGREnvelopes." @@ -83,7 +77,8 @@ get_area = double_output(lgdal.OGR_G_GetArea, [c_void_p]) get_centroid = void_output(lgdal.OGR_G_Centroid, [c_void_p, c_void_p]) get_dims = int_output(lgdal.OGR_G_GetDimension, [c_void_p]) -get_coord_dims = int_output(lgdal.OGR_G_GetCoordinateDimension, [c_void_p]) +get_coord_dim = int_output(lgdal.OGR_G_GetCoordinateDimension, [c_void_p]) +set_coord_dim = void_output(lgdal.OGR_G_SetCoordinateDimension, [c_void_p, c_int], errcheck=False) get_geom_count = int_output(lgdal.OGR_G_GetGeometryCount, [c_void_p]) get_geom_name = const_string_output(lgdal.OGR_G_GetGeometryName, [c_void_p]) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/tests/test_ds.py --- a/web/lib/django/contrib/gis/gdal/tests/test_ds.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/tests/test_ds.py Tue May 25 02:43:45 2010 +0200 @@ -1,13 +1,11 @@ import os, os.path, unittest -from django.contrib.gis.gdal import DataSource, Envelope, OGRException, OGRIndexError +from django.contrib.gis.gdal import DataSource, Envelope, OGRGeometry, OGRException, OGRIndexError from django.contrib.gis.gdal.field import OFTReal, OFTInteger, OFTString from django.contrib import gis # Path for SHP files data_path = os.path.join(os.path.dirname(gis.__file__), 'tests' + os.sep + 'data') def get_ds_file(name, ext): - - return os.sep.join([data_path, name, name + '.%s' % ext]) # Test SHP data source object @@ -25,7 +23,7 @@ srs_wkt='GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]', field_values={'dbl' : [float(i) for i in range(1, 6)], 'int' : range(1, 6), 'str' : [str(i) for i in range(1, 6)]}, fids=range(5)), - TestDS('test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype=1, driver='VRT', + TestDS('test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype='Point25D', driver='VRT', fields={'POINT_X' : OFTString, 'POINT_Y' : OFTString, 'NUM' : OFTString}, # VRT uses CSV, which all types are OFTString. extent=(1.0, 2.0, 100.0, 523.5), # Min/Max from CSV field_values={'POINT_X' : ['1.0', '5.0', '100.0'], 'POINT_Y' : ['2.0', '23.0', '523.5'], 'NUM' : ['5', '17', '23']}, @@ -191,7 +189,41 @@ if hasattr(source, 'srs_wkt'): self.assertEqual(source.srs_wkt, g.srs.wkt) + def test06_spatial_filter(self): + "Testing the Layer.spatial_filter property." + ds = DataSource(get_ds_file('cities', 'shp')) + lyr = ds[0] + # When not set, it should be None. + self.assertEqual(None, lyr.spatial_filter) + + # Must be set a/an OGRGeometry or 4-tuple. + self.assertRaises(TypeError, lyr._set_spatial_filter, 'foo') + + # Setting the spatial filter with a tuple/list with the extent of + # a buffer centering around Pueblo. + self.assertRaises(ValueError, lyr._set_spatial_filter, range(5)) + filter_extent = (-105.609252, 37.255001, -103.609252, 39.255001) + lyr.spatial_filter = (-105.609252, 37.255001, -103.609252, 39.255001) + self.assertEqual(OGRGeometry.from_bbox(filter_extent), lyr.spatial_filter) + feats = [feat for feat in lyr] + self.assertEqual(1, len(feats)) + self.assertEqual('Pueblo', feats[0].get('Name')) + + # Setting the spatial filter with an OGRGeometry for buffer centering + # around Houston. + filter_geom = OGRGeometry('POLYGON((-96.363151 28.763374,-94.363151 28.763374,-94.363151 30.763374,-96.363151 30.763374,-96.363151 28.763374))') + lyr.spatial_filter = filter_geom + self.assertEqual(filter_geom, lyr.spatial_filter) + feats = [feat for feat in lyr] + self.assertEqual(1, len(feats)) + self.assertEqual('Houston', feats[0].get('Name')) + + # Clearing the spatial filter by setting it to None. Now + # should indicate that there are 3 features in the Layer. + lyr.spatial_filter = None + self.assertEqual(3, len(lyr)) + def suite(): s = unittest.TestSuite() s.addTest(unittest.makeSuite(DataSourceTest)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/tests/test_envelope.py --- a/web/lib/django/contrib/gis/gdal/tests/test_envelope.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/tests/test_envelope.py Tue May 25 02:43:45 2010 +0200 @@ -55,7 +55,7 @@ self.assertEqual((0, 0, 5, 6), self.e) self.e.expand_to_include(-1, -1) self.assertEqual((-1, -1, 5, 6), self.e) - + def test05_expand_to_include_pt_2_tuple(self): "Testing Envelope expand_to_include -- point as a single 2-tuple parameter." self.e.expand_to_include((10, 10)) @@ -67,17 +67,17 @@ "Testing Envelope expand_to_include -- extent as 4 parameters." self.e.expand_to_include(-1, 1, 3, 7) self.assertEqual((-1, 0, 5, 7), self.e) - + def test06_expand_to_include_extent_4_tuple(self): "Testing Envelope expand_to_include -- extent as a single 4-tuple parameter." self.e.expand_to_include((-1, 1, 3, 7)) self.assertEqual((-1, 0, 5, 7), self.e) - + def test07_expand_to_include_envelope(self): "Testing Envelope expand_to_include with Envelope as parameter." self.e.expand_to_include(Envelope(-1, 1, 3, 7)) self.assertEqual((-1, 0, 5, 7), self.e) - + def test08_expand_to_include_point(self): "Testing Envelope expand_to_include with Point as parameter." self.e.expand_to_include(TestPoint(-1, 1)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/gdal/tests/test_geom.py --- a/web/lib/django/contrib/gis/gdal/tests/test_geom.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/gdal/tests/test_geom.py Tue May 25 02:43:45 2010 +0200 @@ -46,12 +46,30 @@ self.assertEqual(0, gt.num) self.assertEqual('Unknown', gt.name) + def test00b_geomtype_25d(self): + "Testing OGRGeomType object with 25D types." + wkb25bit = OGRGeomType.wkb25bit + self.failUnless(OGRGeomType(wkb25bit + 1) == 'Point25D') + self.failUnless(OGRGeomType('MultiLineString25D') == (5 + wkb25bit)) + self.assertEqual('GeometryCollectionField', OGRGeomType('GeometryCollection25D').django) + def test01a_wkt(self): "Testing WKT output." for g in wkt_out: geom = OGRGeometry(g.wkt) self.assertEqual(g.wkt, geom.wkt) + def test01a_ewkt(self): + "Testing EWKT input/output." + for ewkt_val in ('POINT (1 2 3)', 'LINEARRING (0 0,1 1,2 1,0 0)'): + # First with ewkt output when no SRID in EWKT + self.assertEqual(ewkt_val, OGRGeometry(ewkt_val).ewkt) + # No test consumption with an SRID specified. + ewkt_val = 'SRID=4326;%s' % ewkt_val + geom = OGRGeometry(ewkt_val) + self.assertEqual(ewkt_val, geom.ewkt) + self.assertEqual(4326, geom.srs.srid) + def test01b_gml(self): "Testing GML output." for g in wkt_out: @@ -118,7 +136,7 @@ self.assertEqual(mgeom1, mgeom3) self.assertEqual(mp.points, mgeom2.tuple) self.assertEqual(mp.n_p, mgeom2.point_count) - + def test04_linestring(self): "Testing LineString objects." prev = OGRGeometry('POINT(0 0)') @@ -154,7 +172,7 @@ for ls in mlinestr: self.assertEqual(2, ls.geom_type) self.assertEqual('LINESTRING', ls.geom_name) - self.assertRaises(OGRIndexError, mlinestr.__getitem__, len(mlinestr)) + self.assertRaises(OGRIndexError, mlinestr.__getitem__, len(mlinestr)) def test06_linearring(self): "Testing LinearRing objects." @@ -172,7 +190,7 @@ "Testing Polygon objects." # Testing `from_bbox` class method - bbox = (-180,-90,180,90) + bbox = (-180,-90,180,90) p = OGRGeometry.from_bbox( bbox ) self.assertEqual(bbox, p.extent) @@ -193,13 +211,13 @@ # Testing equivalence self.assertEqual(True, poly == OGRGeometry(p.wkt)) self.assertEqual(True, poly != prev) - + if p.ext_ring_cs: ring = poly[0] self.assertEqual(p.ext_ring_cs, ring.tuple) self.assertEqual(p.ext_ring_cs, poly[0].tuple) self.assertEqual(len(p.ext_ring_cs), ring.point_count) - + for r in poly: self.assertEqual('LINEARRING', r.geom_name) @@ -251,11 +269,11 @@ sr = SpatialReference('WGS84') mpoly = OGRGeometry(mp.wkt, sr) self.assertEqual(sr.wkt, mpoly.srs.wkt) - + # Ensuring that SRS is propagated to clones. klone = mpoly.clone() self.assertEqual(sr.wkt, klone.srs.wkt) - + # Ensuring all children geometries (polygons and their rings) all # return the assigned spatial reference as well. for poly in mpoly: @@ -277,7 +295,7 @@ mpoly.srs = SpatialReference(4269) self.assertEqual(4269, mpoly.srid) self.assertEqual('NAD83', mpoly.srs.name) - + # Incrementing through the multipolyogn after the spatial reference # has been re-assigned. for poly in mpoly: @@ -319,6 +337,18 @@ self.assertAlmostEqual(trans.x, p.x, prec) self.assertAlmostEqual(trans.y, p.y, prec) + def test09c_transform_dim(self): + "Testing coordinate dimension is the same on transformed geometries." + ls_orig = OGRGeometry('LINESTRING(-104.609 38.255)', 4326) + ls_trans = OGRGeometry('LINESTRING(992385.4472045 481455.4944650)', 2774) + + prec = 3 + ls_orig.transform(ls_trans.srs) + # Making sure the coordinate dimension is still 2D. + self.assertEqual(2, ls_orig.coord_dim) + self.assertAlmostEqual(ls_trans.x[0], ls_orig.x[0], prec) + self.assertAlmostEqual(ls_trans.y[0], ls_orig.y[0], prec) + def test10_difference(self): "Testing difference()." for i in xrange(len(topology_geoms)): @@ -358,7 +388,7 @@ self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator a ^= b # testing __ixor__ self.assertEqual(d1, a) - + def test13_union(self): "Testing union()." for i in xrange(len(topology_geoms)): @@ -406,6 +436,56 @@ xmax, ymax = max(x), max(y) self.assertEqual((xmin, ymin, xmax, ymax), poly.extent) + def test16_25D(self): + "Testing 2.5D geometries." + pnt_25d = OGRGeometry('POINT(1 2 3)') + self.assertEqual('Point25D', pnt_25d.geom_type.name) + self.assertEqual(3.0, pnt_25d.z) + self.assertEqual(3, pnt_25d.coord_dim) + ls_25d = OGRGeometry('LINESTRING(1 1 1,2 2 2,3 3 3)') + self.assertEqual('LineString25D', ls_25d.geom_type.name) + self.assertEqual([1.0, 2.0, 3.0], ls_25d.z) + self.assertEqual(3, ls_25d.coord_dim) + + def test17_pickle(self): + "Testing pickle support." + import cPickle + g1 = OGRGeometry('LINESTRING(1 1 1,2 2 2,3 3 3)', 'WGS84') + g2 = cPickle.loads(cPickle.dumps(g1)) + self.assertEqual(g1, g2) + self.assertEqual(4326, g2.srs.srid) + self.assertEqual(g1.srs.wkt, g2.srs.wkt) + + def test18_ogrgeometry_transform_workaround(self): + "Testing coordinate dimensions on geometries after transformation." + # A bug in GDAL versions prior to 1.7 changes the coordinate + # dimension of a geometry after it has been transformed. + # This test ensures that the bug workarounds employed within + # `OGRGeometry.transform` indeed work. + wkt_2d = "MULTILINESTRING ((0 0,1 1,2 2))" + wkt_3d = "MULTILINESTRING ((0 0 0,1 1 1,2 2 2))" + srid = 4326 + + # For both the 2D and 3D MultiLineString, ensure _both_ the dimension + # of the collection and the component LineString have the expected + # coordinate dimension after transform. + geom = OGRGeometry(wkt_2d, srid) + geom.transform(srid) + self.assertEqual(2, geom.coord_dim) + self.assertEqual(2, geom[0].coord_dim) + self.assertEqual(wkt_2d, geom.wkt) + + geom = OGRGeometry(wkt_3d, srid) + geom.transform(srid) + self.assertEqual(3, geom.coord_dim) + self.assertEqual(3, geom[0].coord_dim) + self.assertEqual(wkt_3d, geom.wkt) + + def test19_equivalence_regression(self): + "Testing equivalence methods with non-OGRGeometry instances." + self.assertNotEqual(None, OGRGeometry('POINT(0 0)')) + self.assertEqual(False, OGRGeometry('LINESTRING(0 0, 1 1)') == 3) + def suite(): s = unittest.TestSuite() s.addTest(unittest.makeSuite(OGRGeomTest)) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geometry/__init__.py diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geometry/backend/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/geometry/backend/__init__.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,21 @@ +from django.conf import settings +from django.core.exceptions import ImproperlyConfigured +from django.utils.importlib import import_module + +geom_backend = getattr(settings, 'GEOMETRY_BACKEND', 'geos') + +try: + module = import_module('.%s' % geom_backend, 'django.contrib.gis.geometry.backend') +except ImportError, e: + try: + module = import_module(geom_backend) + except ImportError, e_user: + raise ImproperlyConfigured('Could not import user-defined GEOMETRY_BACKEND ' + '"%s".' % geom_backend) + +try: + Geometry = module.Geometry + GeometryException = module.GeometryException +except AttributeError: + raise ImproperlyConfigured('Cannot import Geometry from the "%s" ' + 'geometry backend.' % geom_backend) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geometry/backend/geos.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/geometry/backend/geos.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,3 @@ +from django.contrib.gis.geos import \ + GEOSGeometry as Geometry, \ + GEOSException as GeometryException diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geometry/regex.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/geometry/regex.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,12 @@ +import re + +# Regular expression for recognizing HEXEWKB and WKT. A prophylactic measure +# to prevent potentially malicious input from reaching the underlying C +# library. Not a substitute for good web security programming practices. +hex_regex = re.compile(r'^[0-9A-F]+$', re.I) +wkt_regex = re.compile(r'^(SRID=(?P\d+);)?' + r'(?P' + r'(?PPOINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)' + r'[ACEGIMLONPSRUTYZ\d,\.\-\(\) ]+)$', + re.I) +json_regex = re.compile(r'^(\s+)?\{[\s\w,\[\]\{\}\-\."\':]+\}(\s+)?$') diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/collections.py --- a/web/lib/django/contrib/gis/geos/collections.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/collections.py Tue May 25 02:43:45 2010 +0200 @@ -19,7 +19,7 @@ # Checking the arguments if not args: - raise TypeError, 'Must provide at least one Geometry to initialize %s.' % self.__class__.__name__ + raise TypeError('Must provide at least one Geometry to initialize %s.' % self.__class__.__name__) if len(args) == 1: # If only one geometry provided or a list of geometries is provided diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/geometry.py --- a/web/lib/django/contrib/gis/geos/geometry.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/geometry.py Tue May 25 02:43:45 2010 +0200 @@ -21,11 +21,12 @@ # the underlying GEOS library. from django.contrib.gis.geos import prototypes as capi -# Regular expression for recognizing HEXEWKB and WKT. A prophylactic measure -# to prevent potentially malicious input from reaching the underlying C -# library. Not a substitute for good web security programming practices. -hex_regex = re.compile(r'^[0-9A-F]+$', re.I) -wkt_regex = re.compile(r'^(SRID=(?P\d+);)?(?P(POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+)$', re.I) +# These functions provide access to a thread-local instance +# of their corresponding GEOS I/O class. +from django.contrib.gis.geos.prototypes.io import wkt_r, wkt_w, wkb_r, wkb_w, ewkb_w, ewkb_w3d + +# For recognizing geometry input. +from django.contrib.gis.geometry.regex import hex_regex, wkt_regex, json_regex class GEOSGeometry(GEOSBase, ListMixin): "A class that, generally, encapsulates a GEOS geometry." @@ -61,13 +62,13 @@ if wkt_m: # Handling WKT input. if wkt_m.group('srid'): srid = int(wkt_m.group('srid')) - g = wkt_r.read(wkt_m.group('wkt')) + g = wkt_r().read(wkt_m.group('wkt')) elif hex_regex.match(geo_input): # Handling HEXEWKB input. - g = wkb_r.read(geo_input) - elif gdal.GEOJSON and gdal.geometries.json_regex.match(geo_input): + g = wkb_r().read(geo_input) + elif gdal.GEOJSON and json_regex.match(geo_input): # Handling GeoJSON input. - g = wkb_r.read(gdal.OGRGeometry(geo_input).wkb) + g = wkb_r().read(gdal.OGRGeometry(geo_input).wkb) else: raise ValueError('String or unicode input unrecognized as WKT EWKT, and HEXEWKB.') elif isinstance(geo_input, GEOM_PTR): @@ -75,7 +76,7 @@ g = geo_input elif isinstance(geo_input, buffer): # When the input is a buffer (WKB). - g = wkb_r.read(geo_input) + g = wkb_r().read(geo_input) elif isinstance(geo_input, GEOSGeometry): g = capi.geom_clone(geo_input.ptr) else: @@ -142,7 +143,7 @@ def __setstate__(self, state): # Instantiating from the tuple state that was pickled. wkb, srid = state - ptr = capi.from_wkb(wkb, len(wkb)) + ptr = wkb_r().read(buffer(wkb)) if not ptr: raise GEOSException('Invalid Geometry loaded from pickled state.') self.ptr = ptr self._post_init(srid) @@ -357,25 +358,45 @@ #### Output Routines #### @property def ewkt(self): - "Returns the EWKT (WKT + SRID) of the Geometry." + """ + Returns the EWKT (WKT + SRID) of the Geometry. Note that Z values + are *not* included in this representation because GEOS does not yet + support serializing them. + """ if self.get_srid(): return 'SRID=%s;%s' % (self.srid, self.wkt) else: return self.wkt @property def wkt(self): - "Returns the WKT (Well-Known Text) of the Geometry." - return wkt_w.write(self) + "Returns the WKT (Well-Known Text) representation of this Geometry." + return wkt_w().write(self) @property def hex(self): """ - Returns the HEX of the Geometry -- please note that the SRID is not - included in this representation, because the GEOS C library uses - -1 by default, even if the SRID is set. + Returns the WKB of this Geometry in hexadecimal form. Please note + that the SRID and Z values are not included in this representation + because it is not a part of the OGC specification (use the `hexewkb` + property instead). """ # A possible faster, all-python, implementation: # str(self.wkb).encode('hex') - return wkb_w.write_hex(self) + return wkb_w().write_hex(self) + + @property + def hexewkb(self): + """ + Returns the EWKB of this Geometry in hexadecimal form. This is an + extension of the WKB specification that includes SRID and Z values + that are a part of this geometry. + """ + if self.hasz: + if not GEOS_PREPARE: + # See: http://trac.osgeo.org/geos/ticket/216 + raise GEOSException('Upgrade GEOS to 3.1 to get valid 3D HEXEWKB.') + return ewkb_w3d().write_hex(self) + else: + return ewkb_w().write_hex(self) @property def json(self): @@ -383,7 +404,7 @@ Returns GeoJSON representation of this Geometry if GDAL 1.5+ is installed. """ - if gdal.GEOJSON: + if gdal.GEOJSON: return self.ogr.json else: raise GEOSException('GeoJSON output only supported on GDAL 1.5+.') @@ -391,8 +412,27 @@ @property def wkb(self): - "Returns the WKB of the Geometry as a buffer." - return wkb_w.write(self) + """ + Returns the WKB (Well-Known Binary) representation of this Geometry + as a Python buffer. SRID and Z values are not included, use the + `ewkb` property instead. + """ + return wkb_w().write(self) + + @property + def ewkb(self): + """ + Return the EWKB representation of this Geometry as a Python buffer. + This is an extension of the WKB specification that includes any SRID + and Z values that are a part of this geometry. + """ + if self.hasz: + if not GEOS_PREPARE: + # See: http://trac.osgeo.org/geos/ticket/216 + raise GEOSException('Upgrade GEOS to 3.1 to get valid 3D EWKB.') + return ewkb_w3d().write(self) + else: + return ewkb_w().write(self) @property def kml(self): @@ -454,7 +494,7 @@ g = gdal.OGRGeometry(self.wkb, srid) g.transform(ct) # Getting a new GEOS pointer - ptr = wkb_r.read(g.wkb) + ptr = wkb_r().read(g.wkb) if clone: # User wants a cloned transformed geometry returned. return GEOSGeometry(ptr, srid=g.srid) @@ -616,9 +656,6 @@ 7 : GeometryCollection, } -# Similarly, import the GEOS I/O instances here to avoid conflicts. -from django.contrib.gis.geos.io import wkt_r, wkt_w, wkb_r, wkb_w - # If supported, import the PreparedGeometry class. if GEOS_PREPARE: from django.contrib.gis.geos.prepared import PreparedGeometry diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/io.py --- a/web/lib/django/contrib/gis/geos/io.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/io.py Tue May 25 02:43:45 2010 +0200 @@ -3,121 +3,18 @@ objects. Specifically, this has Python implementations of WKB/WKT reader and writer classes. """ -from ctypes import byref, c_size_t -from django.contrib.gis.geos.base import GEOSBase -from django.contrib.gis.geos.error import GEOSException from django.contrib.gis.geos.geometry import GEOSGeometry -from django.contrib.gis.geos.libgeos import GEOM_PTR -from django.contrib.gis.geos.prototypes import io as capi - -class IOBase(GEOSBase): - "Base class for GEOS I/O objects." - def __init__(self): - # Getting the pointer with the constructor. - self.ptr = self.constructor() +from django.contrib.gis.geos.prototypes.io import _WKTReader, _WKBReader, WKBWriter, WKTWriter - def __del__(self): - # Cleaning up with the appropriate destructor. - if self._ptr: self.destructor(self._ptr) - -### WKT Reading and Writing objects ### - -# Non-public class for internal use because its `read` method returns -# _pointers_ instead of a GEOSGeometry object. -class _WKTReader(IOBase): - constructor = capi.wkt_reader_create - destructor = capi.wkt_reader_destroy - ptr_type = capi.WKT_READ_PTR - - def read(self, wkt): - if not isinstance(wkt, basestring): raise TypeError - return capi.wkt_reader_read(self.ptr, wkt) +# Public classes for (WKB|WKT)Reader, which return GEOSGeometry +class WKBReader(_WKBReader): + def read(self, wkb): + "Returns a GEOSGeometry for the given WKB buffer." + return GEOSGeometry(super(WKBReader, self).read(wkb)) class WKTReader(_WKTReader): def read(self, wkt): "Returns a GEOSGeometry for the given WKT string." return GEOSGeometry(super(WKTReader, self).read(wkt)) -class WKTWriter(IOBase): - constructor = capi.wkt_writer_create - destructor = capi.wkt_writer_destroy - ptr_type = capi.WKT_WRITE_PTR - def write(self, geom): - "Returns the WKT representation of the given geometry." - return capi.wkt_writer_write(self.ptr, geom.ptr) - -### WKB Reading and Writing objects ### - -# Non-public class for the same reason as _WKTReader above. -class _WKBReader(IOBase): - constructor = capi.wkb_reader_create - destructor = capi.wkb_reader_destroy - ptr_type = capi.WKB_READ_PTR - - def read(self, wkb): - "Returns a _pointer_ to C GEOS Geometry object from the given WKB." - if isinstance(wkb, buffer): - wkb_s = str(wkb) - return capi.wkb_reader_read(self.ptr, wkb_s, len(wkb_s)) - elif isinstance(wkb, basestring): - return capi.wkb_reader_read_hex(self.ptr, wkb, len(wkb)) - else: - raise TypeError - -class WKBReader(_WKBReader): - def read(self, wkb): - "Returns a GEOSGeometry for the given WKB buffer." - return GEOSGeometry(super(WKBReader, self).read(wkb)) - -class WKBWriter(IOBase): - constructor = capi.wkb_writer_create - destructor = capi.wkb_writer_destroy - ptr_type = capi.WKB_WRITE_PTR - - def write(self, geom): - "Returns the WKB representation of the given geometry." - return buffer(capi.wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t()))) - - def write_hex(self, geom): - "Returns the HEXEWKB representation of the given geometry." - return capi.wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t())) - - ### WKBWriter Properties ### - - # Property for getting/setting the byteorder. - def _get_byteorder(self): - return capi.wkb_writer_get_byteorder(self.ptr) - - def _set_byteorder(self, order): - if not order in (0, 1): raise ValueError('Byte order parameter must be 0 (Big Endian) or 1 (Little Endian).') - capi.wkb_writer_set_byteorder(self.ptr, order) - - byteorder = property(_get_byteorder, _set_byteorder) - - # Property for getting/setting the output dimension. - def _get_outdim(self): - return capi.wkb_writer_get_outdim(self.ptr) - - def _set_outdim(self, new_dim): - if not new_dim in (2, 3): raise ValueError('WKB output dimension must be 2 or 3') - capi.wkb_writer_set_outdim(self.ptr, new_dim) - - outdim = property(_get_outdim, _set_outdim) - - # Property for getting/setting the include srid flag. - def _get_include_srid(self): - return bool(ord(capi.wkb_writer_get_include_srid(self.ptr))) - - def _set_include_srid(self, include): - if bool(include): flag = chr(1) - else: flag = chr(0) - capi.wkb_writer_set_include_srid(self.ptr, flag) - - srid = property(_get_include_srid, _set_include_srid) - -# Instances of the WKT and WKB reader/writer objects. -wkt_r = _WKTReader() -wkt_w = WKTWriter() -wkb_r = _WKBReader() -wkb_w = WKBWriter() diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/libgeos.py --- a/web/lib/django/contrib/gis/geos/libgeos.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/libgeos.py Tue May 25 02:43:45 2010 +0200 @@ -6,7 +6,7 @@ This module also houses GEOS Pointer utilities, including get_pointer_arr(), and GEOM_PTR. """ -import atexit, os, re, sys +import os, re, sys from ctypes import c_char_p, Structure, CDLL, CFUNCTYPE, POINTER from ctypes.util import find_library from django.contrib.gis.geos.error import GEOSException @@ -45,14 +45,14 @@ '", "'.join(lib_names)) # Getting the GEOS C library. The C interface (CDLL) is used for -# both *NIX and Windows. +# both *NIX and Windows. # See the GEOS C API source code for more details on the library function calls: # http://geos.refractions.net/ro/doxygen_docs/html/geos__c_8h-source.html lgeos = CDLL(lib_path) # The notice and error handler C function callback definitions. -# Supposed to mimic the GEOS message handler (C below): -# "typedef void (*GEOSMessageHandler)(const char *fmt, ...);" +# Supposed to mimic the GEOS message handler (C below): +# typedef void (*GEOSMessageHandler)(const char *fmt, ...); NOTICEFUNC = CFUNCTYPE(None, c_char_p, c_char_p) def notice_h(fmt, lst, output_h=sys.stdout): try: @@ -71,23 +71,19 @@ output_h.write('GEOS_ERROR: %s\n' % err_msg) error_h = ERRORFUNC(error_h) -# The initGEOS routine should be called first, however, that routine takes -# the notice and error functions as parameters. Here is the C code that -# is wrapped: -# "extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function);" -lgeos.initGEOS(notice_h, error_h) - #### GEOS Geometry C data structures, and utility functions. #### # Opaque GEOS geometry structures, used for GEOM_PTR and CS_PTR class GEOSGeom_t(Structure): pass class GEOSPrepGeom_t(Structure): pass class GEOSCoordSeq_t(Structure): pass +class GEOSContextHandle_t(Structure): pass # Pointers to opaque GEOS geometry structures. GEOM_PTR = POINTER(GEOSGeom_t) PREPGEOM_PTR = POINTER(GEOSPrepGeom_t) CS_PTR = POINTER(GEOSCoordSeq_t) +CONTEXT_PTR = POINTER(GEOSContextHandle_t) # Used specifically by the GEOSGeom_createPolygon and GEOSGeom_createCollection # GEOS routines @@ -104,7 +100,7 @@ # Regular expression should be able to parse version strings such as # '3.0.0rc4-CAPI-1.3.3', or '3.0.0-CAPI-1.4.1' -version_regex = re.compile(r'^(?P(?P\d+)\.(?P\d+)\.\d+)(rc(?P\d+))?-CAPI-(?P\d+\.\d+\.\d+)$') +version_regex = re.compile(r'^(?P(?P\d+)\.(?P\d+)\.(?P\d+))(rc(?P\d+))?-CAPI-(?P\d+\.\d+\.\d+)$') def geos_version_info(): """ Returns a dictionary containing the various version metadata parsed from @@ -115,14 +111,31 @@ ver = geos_version() m = version_regex.match(ver) if not m: raise GEOSException('Could not parse version info string "%s"' % ver) - return dict((key, m.group(key)) for key in ('version', 'release_candidate', 'capi_version', 'major', 'minor')) + return dict((key, m.group(key)) for key in ('version', 'release_candidate', 'capi_version', 'major', 'minor', 'subminor')) # Version numbers and whether or not prepared geometry support is available. _verinfo = geos_version_info() GEOS_MAJOR_VERSION = int(_verinfo['major']) GEOS_MINOR_VERSION = int(_verinfo['minor']) +GEOS_SUBMINOR_VERSION = int(_verinfo['subminor']) del _verinfo -GEOS_PREPARE = GEOS_MAJOR_VERSION > 3 or GEOS_MAJOR_VERSION == 3 and GEOS_MINOR_VERSION >= 1 +GEOS_VERSION = (GEOS_MAJOR_VERSION, GEOS_MINOR_VERSION, GEOS_SUBMINOR_VERSION) +GEOS_PREPARE = GEOS_VERSION >= (3, 1, 0) -# Calling the finishGEOS() upon exit of the interpreter. -atexit.register(lgeos.finishGEOS) +if GEOS_PREPARE: + # Here we set up the prototypes for the initGEOS_r and finishGEOS_r + # routines. These functions aren't actually called until they are + # attached to a GEOS context handle -- this actually occurs in + # geos/prototypes/threadsafe.py. + lgeos.initGEOS_r.restype = CONTEXT_PTR + lgeos.finishGEOS_r.argtypes = [CONTEXT_PTR] +else: + # When thread-safety isn't available, the initGEOS routine must be called + # first. This function takes the notice and error functions, defined + # as Python callbacks above, as parameters. Here is the C code that is + # wrapped: + # extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function); + lgeos.initGEOS(notice_h, error_h) + # Calling finishGEOS() upon exit of the interpreter. + import atexit + atexit.register(lgeos.finishGEOS) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/coordseq.py --- a/web/lib/django/contrib/gis/geos/prototypes/coordseq.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/coordseq.py Tue May 25 02:43:45 2010 +0200 @@ -1,6 +1,7 @@ from ctypes import c_double, c_int, c_uint, POINTER -from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR, CS_PTR +from django.contrib.gis.geos.libgeos import GEOM_PTR, CS_PTR from django.contrib.gis.geos.prototypes.errcheck import last_arg_byref, GEOSException +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc ## Error-checking routines specific to coordinate sequences. ## def check_cs_ptr(result, func, cargs): @@ -59,24 +60,24 @@ ## Coordinate Sequence ctypes prototypes ## # Coordinate Sequence constructors & cloning. -cs_clone = cs_output(lgeos.GEOSCoordSeq_clone, [CS_PTR]) -create_cs = cs_output(lgeos.GEOSCoordSeq_create, [c_uint, c_uint]) -get_cs = cs_output(lgeos.GEOSGeom_getCoordSeq, [GEOM_PTR]) +cs_clone = cs_output(GEOSFunc('GEOSCoordSeq_clone'), [CS_PTR]) +create_cs = cs_output(GEOSFunc('GEOSCoordSeq_create'), [c_uint, c_uint]) +get_cs = cs_output(GEOSFunc('GEOSGeom_getCoordSeq'), [GEOM_PTR]) # Getting, setting ordinate -cs_getordinate = cs_operation(lgeos.GEOSCoordSeq_getOrdinate, ordinate=True, get=True) -cs_setordinate = cs_operation(lgeos.GEOSCoordSeq_setOrdinate, ordinate=True) +cs_getordinate = cs_operation(GEOSFunc('GEOSCoordSeq_getOrdinate'), ordinate=True, get=True) +cs_setordinate = cs_operation(GEOSFunc('GEOSCoordSeq_setOrdinate'), ordinate=True) # For getting, x, y, z -cs_getx = cs_operation(lgeos.GEOSCoordSeq_getX, get=True) -cs_gety = cs_operation(lgeos.GEOSCoordSeq_getY, get=True) -cs_getz = cs_operation(lgeos.GEOSCoordSeq_getZ, get=True) +cs_getx = cs_operation(GEOSFunc('GEOSCoordSeq_getX'), get=True) +cs_gety = cs_operation(GEOSFunc('GEOSCoordSeq_getY'), get=True) +cs_getz = cs_operation(GEOSFunc('GEOSCoordSeq_getZ'), get=True) # For setting, x, y, z -cs_setx = cs_operation(lgeos.GEOSCoordSeq_setX) -cs_sety = cs_operation(lgeos.GEOSCoordSeq_setY) -cs_setz = cs_operation(lgeos.GEOSCoordSeq_setZ) +cs_setx = cs_operation(GEOSFunc('GEOSCoordSeq_setX')) +cs_sety = cs_operation(GEOSFunc('GEOSCoordSeq_setY')) +cs_setz = cs_operation(GEOSFunc('GEOSCoordSeq_setZ')) # These routines return size & dimensions. -cs_getsize = cs_int(lgeos.GEOSCoordSeq_getSize) -cs_getdims = cs_int(lgeos.GEOSCoordSeq_getDimensions) +cs_getsize = cs_int(GEOSFunc('GEOSCoordSeq_getSize')) +cs_getdims = cs_int(GEOSFunc('GEOSCoordSeq_getDimensions')) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/errcheck.py --- a/web/lib/django/contrib/gis/geos/prototypes/errcheck.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/errcheck.py Tue May 25 02:43:45 2010 +0200 @@ -2,21 +2,32 @@ Error checking functions for GEOS ctypes prototype functions. """ import os -from ctypes import string_at, CDLL -from ctypes.util import find_library +from ctypes import c_void_p, string_at, CDLL from django.contrib.gis.geos.error import GEOSException +from django.contrib.gis.geos.libgeos import GEOS_VERSION +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc -# Getting the C library, needed to free the string pointers -# returned from GEOS. -if os.name == 'nt': - libc_name = 'msvcrt' +# Getting the `free` routine used to free the memory allocated for +# string pointers returned by GEOS. +if GEOS_VERSION >= (3, 1, 1): + # In versions 3.1.1 and above, `GEOSFree` was added to the C API + # because `free` isn't always available on all platforms. + free = GEOSFunc('GEOSFree') + free.argtypes = [c_void_p] + free.restype = None else: - libc_name = 'libc' -libc = CDLL(find_library(libc_name)) + # Getting the `free` routine from the C library of the platform. + if os.name == 'nt': + # On NT, use the MS C library. + libc = CDLL('msvcrt') + else: + # On POSIX platforms C library is obtained by passing None into `CDLL`. + libc = CDLL(None) + free = libc.free ### ctypes error checking routines ### def last_arg_byref(args): - "Returns the last C argument's by reference value." + "Returns the last C argument's value by reference." return args[-1]._obj.value def check_dbl(result, func, cargs): @@ -60,7 +71,7 @@ # correct size. s = string_at(result, last_arg_byref(cargs)) # Freeing the memory allocated within GEOS - libc.free(result) + free(result) return s def check_string(result, func, cargs): @@ -73,7 +84,7 @@ # Getting the string value at the pointer address. s = string_at(result) # Freeing the memory allocated within GEOS - libc.free(result) + free(result) return s def check_zero(result, func, cargs): diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/geom.py --- a/web/lib/django/contrib/gis/geos/prototypes/geom.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/geom.py Tue May 25 02:43:45 2010 +0200 @@ -1,7 +1,8 @@ from ctypes import c_char_p, c_int, c_size_t, c_ubyte, c_uint, POINTER -from django.contrib.gis.geos.libgeos import lgeos, CS_PTR, GEOM_PTR, PREPGEOM_PTR, GEOS_PREPARE +from django.contrib.gis.geos.libgeos import CS_PTR, GEOM_PTR, PREPGEOM_PTR, GEOS_PREPARE from django.contrib.gis.geos.prototypes.errcheck import \ check_geom, check_minus_one, check_sized_string, check_string, check_zero +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc # This is the return type used by binary output (WKB, HEX) routines. c_uchar_p = POINTER(c_ubyte) @@ -63,56 +64,56 @@ ### ctypes prototypes ### # Deprecated creation routines from WKB, HEX, WKT -from_hex = bin_constructor(lgeos.GEOSGeomFromHEX_buf) -from_wkb = bin_constructor(lgeos.GEOSGeomFromWKB_buf) -from_wkt = geom_output(lgeos.GEOSGeomFromWKT, [c_char_p]) +from_hex = bin_constructor(GEOSFunc('GEOSGeomFromHEX_buf')) +from_wkb = bin_constructor(GEOSFunc('GEOSGeomFromWKB_buf')) +from_wkt = geom_output(GEOSFunc('GEOSGeomFromWKT'), [c_char_p]) -# Output routines -to_hex = bin_output(lgeos.GEOSGeomToHEX_buf) -to_wkb = bin_output(lgeos.GEOSGeomToWKB_buf) -to_wkt = string_from_geom(lgeos.GEOSGeomToWKT) +# Deprecated output routines +to_hex = bin_output(GEOSFunc('GEOSGeomToHEX_buf')) +to_wkb = bin_output(GEOSFunc('GEOSGeomToWKB_buf')) +to_wkt = string_from_geom(GEOSFunc('GEOSGeomToWKT')) # The GEOS geometry type, typeid, num_coordites and number of geometries -geos_normalize = int_from_geom(lgeos.GEOSNormalize) -geos_type = string_from_geom(lgeos.GEOSGeomType) -geos_typeid = int_from_geom(lgeos.GEOSGeomTypeId) -get_dims = int_from_geom(lgeos.GEOSGeom_getDimensions, zero=True) -get_num_coords = int_from_geom(lgeos.GEOSGetNumCoordinates) -get_num_geoms = int_from_geom(lgeos.GEOSGetNumGeometries) +geos_normalize = int_from_geom(GEOSFunc('GEOSNormalize')) +geos_type = string_from_geom(GEOSFunc('GEOSGeomType')) +geos_typeid = int_from_geom(GEOSFunc('GEOSGeomTypeId')) +get_dims = int_from_geom(GEOSFunc('GEOSGeom_getDimensions'), zero=True) +get_num_coords = int_from_geom(GEOSFunc('GEOSGetNumCoordinates')) +get_num_geoms = int_from_geom(GEOSFunc('GEOSGetNumGeometries')) # Geometry creation factories -create_point = geom_output(lgeos.GEOSGeom_createPoint, [CS_PTR]) -create_linestring = geom_output(lgeos.GEOSGeom_createLineString, [CS_PTR]) -create_linearring = geom_output(lgeos.GEOSGeom_createLinearRing, [CS_PTR]) +create_point = geom_output(GEOSFunc('GEOSGeom_createPoint'), [CS_PTR]) +create_linestring = geom_output(GEOSFunc('GEOSGeom_createLineString'), [CS_PTR]) +create_linearring = geom_output(GEOSFunc('GEOSGeom_createLinearRing'), [CS_PTR]) # Polygon and collection creation routines are special and will not # have their argument types defined. -create_polygon = geom_output(lgeos.GEOSGeom_createPolygon, None) -create_collection = geom_output(lgeos.GEOSGeom_createCollection, None) +create_polygon = geom_output(GEOSFunc('GEOSGeom_createPolygon'), None) +create_collection = geom_output(GEOSFunc('GEOSGeom_createCollection'), None) # Ring routines -get_extring = geom_output(lgeos.GEOSGetExteriorRing, [GEOM_PTR]) -get_intring = geom_index(lgeos.GEOSGetInteriorRingN) -get_nrings = int_from_geom(lgeos.GEOSGetNumInteriorRings) +get_extring = geom_output(GEOSFunc('GEOSGetExteriorRing'), [GEOM_PTR]) +get_intring = geom_index(GEOSFunc('GEOSGetInteriorRingN')) +get_nrings = int_from_geom(GEOSFunc('GEOSGetNumInteriorRings')) # Collection Routines -get_geomn = geom_index(lgeos.GEOSGetGeometryN) +get_geomn = geom_index(GEOSFunc('GEOSGetGeometryN')) # Cloning -geom_clone = lgeos.GEOSGeom_clone +geom_clone = GEOSFunc('GEOSGeom_clone') geom_clone.argtypes = [GEOM_PTR] geom_clone.restype = GEOM_PTR # Destruction routine. -destroy_geom = lgeos.GEOSGeom_destroy +destroy_geom = GEOSFunc('GEOSGeom_destroy') destroy_geom.argtypes = [GEOM_PTR] destroy_geom.restype = None # SRID routines -geos_get_srid = lgeos.GEOSGetSRID +geos_get_srid = GEOSFunc('GEOSGetSRID') geos_get_srid.argtypes = [GEOM_PTR] geos_get_srid.restype = c_int -geos_set_srid = lgeos.GEOSSetSRID +geos_set_srid = GEOSFunc('GEOSSetSRID') geos_set_srid.argtypes = [GEOM_PTR, c_int] geos_set_srid.restype = None diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/io.py --- a/web/lib/django/contrib/gis/geos/prototypes/io.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/io.py Tue May 25 02:43:45 2010 +0200 @@ -1,7 +1,10 @@ -from ctypes import c_char_p, c_int, c_char, c_size_t, Structure, POINTER -from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR +import threading +from ctypes import byref, c_char_p, c_int, c_char, c_size_t, Structure, POINTER +from django.contrib.gis.geos.base import GEOSBase +from django.contrib.gis.geos.libgeos import GEOM_PTR from django.contrib.gis.geos.prototypes.errcheck import check_geom, check_string, check_sized_string from django.contrib.gis.geos.prototypes.geom import c_uchar_p, geos_char_p +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc ### The WKB/WKT Reader/Writer structures and pointers ### class WKTReader_st(Structure): pass @@ -15,34 +18,34 @@ WKB_WRITE_PTR = POINTER(WKBReader_st) ### WKTReader routines ### -wkt_reader_create = lgeos.GEOSWKTReader_create +wkt_reader_create = GEOSFunc('GEOSWKTReader_create') wkt_reader_create.restype = WKT_READ_PTR -wkt_reader_destroy = lgeos.GEOSWKTReader_destroy +wkt_reader_destroy = GEOSFunc('GEOSWKTReader_destroy') wkt_reader_destroy.argtypes = [WKT_READ_PTR] -wkt_reader_read = lgeos.GEOSWKTReader_read +wkt_reader_read = GEOSFunc('GEOSWKTReader_read') wkt_reader_read.argtypes = [WKT_READ_PTR, c_char_p] wkt_reader_read.restype = GEOM_PTR wkt_reader_read.errcheck = check_geom ### WKTWriter routines ### -wkt_writer_create = lgeos.GEOSWKTWriter_create +wkt_writer_create = GEOSFunc('GEOSWKTWriter_create') wkt_writer_create.restype = WKT_WRITE_PTR -wkt_writer_destroy = lgeos.GEOSWKTWriter_destroy +wkt_writer_destroy = GEOSFunc('GEOSWKTWriter_destroy') wkt_writer_destroy.argtypes = [WKT_WRITE_PTR] -wkt_writer_write = lgeos.GEOSWKTWriter_write +wkt_writer_write = GEOSFunc('GEOSWKTWriter_write') wkt_writer_write.argtypes = [WKT_WRITE_PTR, GEOM_PTR] wkt_writer_write.restype = geos_char_p wkt_writer_write.errcheck = check_string ### WKBReader routines ### -wkb_reader_create = lgeos.GEOSWKBReader_create +wkb_reader_create = GEOSFunc('GEOSWKBReader_create') wkb_reader_create.restype = WKB_READ_PTR -wkb_reader_destroy = lgeos.GEOSWKBReader_destroy +wkb_reader_destroy = GEOSFunc('GEOSWKBReader_destroy') wkb_reader_destroy.argtypes = [WKB_READ_PTR] def wkb_read_func(func): @@ -56,14 +59,14 @@ func.errcheck = check_geom return func -wkb_reader_read = wkb_read_func(lgeos.GEOSWKBReader_read) -wkb_reader_read_hex = wkb_read_func(lgeos.GEOSWKBReader_readHEX) +wkb_reader_read = wkb_read_func(GEOSFunc('GEOSWKBReader_read')) +wkb_reader_read_hex = wkb_read_func(GEOSFunc('GEOSWKBReader_readHEX')) ### WKBWriter routines ### -wkb_writer_create = lgeos.GEOSWKBWriter_create +wkb_writer_create = GEOSFunc('GEOSWKBWriter_create') wkb_writer_create.restype = WKB_WRITE_PTR -wkb_writer_destroy = lgeos.GEOSWKBWriter_destroy +wkb_writer_destroy = GEOSFunc('GEOSWKBWriter_destroy') wkb_writer_destroy.argtypes = [WKB_WRITE_PTR] # WKB Writing prototypes. @@ -73,8 +76,8 @@ func.errcheck = check_sized_string return func -wkb_writer_write = wkb_write_func(lgeos.GEOSWKBWriter_write) -wkb_writer_write_hex = wkb_write_func(lgeos.GEOSWKBWriter_writeHEX) +wkb_writer_write = wkb_write_func(GEOSFunc('GEOSWKBWriter_write')) +wkb_writer_write_hex = wkb_write_func(GEOSFunc('GEOSWKBWriter_writeHEX')) # WKBWriter property getter/setter prototypes. def wkb_writer_get(func, restype=c_int): @@ -86,9 +89,154 @@ func.argtypes = [WKB_WRITE_PTR, argtype] return func -wkb_writer_get_byteorder = wkb_writer_get(lgeos.GEOSWKBWriter_getByteOrder) -wkb_writer_set_byteorder = wkb_writer_set(lgeos.GEOSWKBWriter_setByteOrder) -wkb_writer_get_outdim = wkb_writer_get(lgeos.GEOSWKBWriter_getOutputDimension) -wkb_writer_set_outdim = wkb_writer_set(lgeos.GEOSWKBWriter_setOutputDimension) -wkb_writer_get_include_srid = wkb_writer_get(lgeos.GEOSWKBWriter_getIncludeSRID, restype=c_char) -wkb_writer_set_include_srid = wkb_writer_set(lgeos.GEOSWKBWriter_setIncludeSRID, argtype=c_char) +wkb_writer_get_byteorder = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getByteOrder')) +wkb_writer_set_byteorder = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setByteOrder')) +wkb_writer_get_outdim = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getOutputDimension')) +wkb_writer_set_outdim = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setOutputDimension')) +wkb_writer_get_include_srid = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getIncludeSRID'), restype=c_char) +wkb_writer_set_include_srid = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setIncludeSRID'), argtype=c_char) + +### Base I/O Class ### +class IOBase(GEOSBase): + "Base class for GEOS I/O objects." + def __init__(self): + # Getting the pointer with the constructor. + self.ptr = self._constructor() + + def __del__(self): + # Cleaning up with the appropriate destructor. + if self._ptr: self._destructor(self._ptr) + +### Base WKB/WKT Reading and Writing objects ### + +# Non-public WKB/WKT reader classes for internal use because +# their `read` methods return _pointers_ instead of GEOSGeometry +# objects. +class _WKTReader(IOBase): + _constructor = wkt_reader_create + _destructor = wkt_reader_destroy + ptr_type = WKT_READ_PTR + + def read(self, wkt): + if not isinstance(wkt, basestring): raise TypeError + return wkt_reader_read(self.ptr, wkt) + +class _WKBReader(IOBase): + _constructor = wkb_reader_create + _destructor = wkb_reader_destroy + ptr_type = WKB_READ_PTR + + def read(self, wkb): + "Returns a _pointer_ to C GEOS Geometry object from the given WKB." + if isinstance(wkb, buffer): + wkb_s = str(wkb) + return wkb_reader_read(self.ptr, wkb_s, len(wkb_s)) + elif isinstance(wkb, basestring): + return wkb_reader_read_hex(self.ptr, wkb, len(wkb)) + else: + raise TypeError + +### WKB/WKT Writer Classes ### +class WKTWriter(IOBase): + _constructor = wkt_writer_create + _destructor = wkt_writer_destroy + ptr_type = WKT_WRITE_PTR + + def write(self, geom): + "Returns the WKT representation of the given geometry." + return wkt_writer_write(self.ptr, geom.ptr) + +class WKBWriter(IOBase): + _constructor = wkb_writer_create + _destructor = wkb_writer_destroy + ptr_type = WKB_WRITE_PTR + + def write(self, geom): + "Returns the WKB representation of the given geometry." + return buffer(wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t()))) + + def write_hex(self, geom): + "Returns the HEXEWKB representation of the given geometry." + return wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t())) + + ### WKBWriter Properties ### + + # Property for getting/setting the byteorder. + def _get_byteorder(self): + return wkb_writer_get_byteorder(self.ptr) + + def _set_byteorder(self, order): + if not order in (0, 1): raise ValueError('Byte order parameter must be 0 (Big Endian) or 1 (Little Endian).') + wkb_writer_set_byteorder(self.ptr, order) + + byteorder = property(_get_byteorder, _set_byteorder) + + # Property for getting/setting the output dimension. + def _get_outdim(self): + return wkb_writer_get_outdim(self.ptr) + + def _set_outdim(self, new_dim): + if not new_dim in (2, 3): raise ValueError('WKB output dimension must be 2 or 3') + wkb_writer_set_outdim(self.ptr, new_dim) + + outdim = property(_get_outdim, _set_outdim) + + # Property for getting/setting the include srid flag. + def _get_include_srid(self): + return bool(ord(wkb_writer_get_include_srid(self.ptr))) + + def _set_include_srid(self, include): + if bool(include): flag = chr(1) + else: flag = chr(0) + wkb_writer_set_include_srid(self.ptr, flag) + + srid = property(_get_include_srid, _set_include_srid) + +# `ThreadLocalIO` object holds instances of the WKT and WKB reader/writer +# objects that are local to the thread. The `GEOSGeometry` internals +# access these instances by calling the module-level functions, defined +# below. +class ThreadLocalIO(threading.local): + wkt_r = None + wkt_w = None + wkb_r = None + wkb_w = None + ewkb_w = None + ewkb_w3d = None + +thread_context = ThreadLocalIO() + +# These module-level routines return the I/O object that is local to the +# the thread. If the I/O object does not exist yet it will be initialized. +def wkt_r(): + if not thread_context.wkt_r: + thread_context.wkt_r = _WKTReader() + return thread_context.wkt_r + +def wkt_w(): + if not thread_context.wkt_w: + thread_context.wkt_w = WKTWriter() + return thread_context.wkt_w + +def wkb_r(): + if not thread_context.wkb_r: + thread_context.wkb_r = _WKBReader() + return thread_context.wkb_r + +def wkb_w(): + if not thread_context.wkb_w: + thread_context.wkb_w = WKBWriter() + return thread_context.wkb_w + +def ewkb_w(): + if not thread_context.ewkb_w: + thread_context.ewkb_w = WKBWriter() + thread_context.ewkb_w.srid = True + return thread_context.ewkb_w + +def ewkb_w3d(): + if not thread_context.ewkb_w3d: + thread_context.ewkb_w3d = WKBWriter() + thread_context.ewkb_w3d.srid = True + thread_context.ewkb_w3d.outdim = 3 + return thread_context.ewkb_w3d diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/misc.py --- a/web/lib/django/contrib/gis/geos/prototypes/misc.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/misc.py Tue May 25 02:43:45 2010 +0200 @@ -3,8 +3,9 @@ ones that return the area, distance, and length. """ from ctypes import c_int, c_double, POINTER -from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR +from django.contrib.gis.geos.libgeos import GEOM_PTR from django.contrib.gis.geos.prototypes.errcheck import check_dbl +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc ### ctypes generator function ### def dbl_from_geom(func, num_geom=1): @@ -22,6 +23,6 @@ ### ctypes prototypes ### # Area, distance, and length prototypes. -geos_area = dbl_from_geom(lgeos.GEOSArea) -geos_distance = dbl_from_geom(lgeos.GEOSDistance, num_geom=2) -geos_length = dbl_from_geom(lgeos.GEOSLength) +geos_area = dbl_from_geom(GEOSFunc('GEOSArea')) +geos_distance = dbl_from_geom(GEOSFunc('GEOSDistance'), num_geom=2) +geos_length = dbl_from_geom(GEOSFunc('GEOSLength')) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/predicates.py --- a/web/lib/django/contrib/gis/geos/prototypes/predicates.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/predicates.py Tue May 25 02:43:45 2010 +0200 @@ -3,8 +3,9 @@ unary and binary predicate operations on geometries. """ from ctypes import c_char, c_char_p, c_double -from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR +from django.contrib.gis.geos.libgeos import GEOM_PTR from django.contrib.gis.geos.prototypes.errcheck import check_predicate +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc ## Binary & unary predicate functions ## def binary_predicate(func, *args): @@ -24,20 +25,20 @@ return func ## Unary Predicates ## -geos_hasz = unary_predicate(lgeos.GEOSHasZ) -geos_isempty = unary_predicate(lgeos.GEOSisEmpty) -geos_isring = unary_predicate(lgeos.GEOSisRing) -geos_issimple = unary_predicate(lgeos.GEOSisSimple) -geos_isvalid = unary_predicate(lgeos.GEOSisValid) +geos_hasz = unary_predicate(GEOSFunc('GEOSHasZ')) +geos_isempty = unary_predicate(GEOSFunc('GEOSisEmpty')) +geos_isring = unary_predicate(GEOSFunc('GEOSisRing')) +geos_issimple = unary_predicate(GEOSFunc('GEOSisSimple')) +geos_isvalid = unary_predicate(GEOSFunc('GEOSisValid')) ## Binary Predicates ## -geos_contains = binary_predicate(lgeos.GEOSContains) -geos_crosses = binary_predicate(lgeos.GEOSCrosses) -geos_disjoint = binary_predicate(lgeos.GEOSDisjoint) -geos_equals = binary_predicate(lgeos.GEOSEquals) -geos_equalsexact = binary_predicate(lgeos.GEOSEqualsExact, c_double) -geos_intersects = binary_predicate(lgeos.GEOSIntersects) -geos_overlaps = binary_predicate(lgeos.GEOSOverlaps) -geos_relatepattern = binary_predicate(lgeos.GEOSRelatePattern, c_char_p) -geos_touches = binary_predicate(lgeos.GEOSTouches) -geos_within = binary_predicate(lgeos.GEOSWithin) +geos_contains = binary_predicate(GEOSFunc('GEOSContains')) +geos_crosses = binary_predicate(GEOSFunc('GEOSCrosses')) +geos_disjoint = binary_predicate(GEOSFunc('GEOSDisjoint')) +geos_equals = binary_predicate(GEOSFunc('GEOSEquals')) +geos_equalsexact = binary_predicate(GEOSFunc('GEOSEqualsExact'), c_double) +geos_intersects = binary_predicate(GEOSFunc('GEOSIntersects')) +geos_overlaps = binary_predicate(GEOSFunc('GEOSOverlaps')) +geos_relatepattern = binary_predicate(GEOSFunc('GEOSRelatePattern'), c_char_p) +geos_touches = binary_predicate(GEOSFunc('GEOSTouches')) +geos_within = binary_predicate(GEOSFunc('GEOSWithin')) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/prepared.py --- a/web/lib/django/contrib/gis/geos/prototypes/prepared.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/prepared.py Tue May 25 02:43:45 2010 +0200 @@ -1,13 +1,14 @@ from ctypes import c_char -from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR, PREPGEOM_PTR +from django.contrib.gis.geos.libgeos import GEOM_PTR, PREPGEOM_PTR from django.contrib.gis.geos.prototypes.errcheck import check_predicate +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc # Prepared geometry constructor and destructors. -geos_prepare = lgeos.GEOSPrepare +geos_prepare = GEOSFunc('GEOSPrepare') geos_prepare.argtypes = [GEOM_PTR] geos_prepare.restype = PREPGEOM_PTR -prepared_destroy = lgeos.GEOSPreparedGeom_destroy +prepared_destroy = GEOSFunc('GEOSPreparedGeom_destroy') prepared_destroy.argtpes = [PREPGEOM_PTR] prepared_destroy.restype = None @@ -18,7 +19,7 @@ func.errcheck = check_predicate return func -prepared_contains = prepared_predicate(lgeos.GEOSPreparedContains) -prepared_contains_properly = prepared_predicate(lgeos.GEOSPreparedContainsProperly) -prepared_covers = prepared_predicate(lgeos.GEOSPreparedCovers) -prepared_intersects = prepared_predicate(lgeos.GEOSPreparedIntersects) +prepared_contains = prepared_predicate(GEOSFunc('GEOSPreparedContains')) +prepared_contains_properly = prepared_predicate(GEOSFunc('GEOSPreparedContainsProperly')) +prepared_covers = prepared_predicate(GEOSFunc('GEOSPreparedCovers')) +prepared_intersects = prepared_predicate(GEOSFunc('GEOSPreparedIntersects')) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/threadsafe.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/geos/prototypes/threadsafe.py Tue May 25 02:43:45 2010 +0200 @@ -0,0 +1,90 @@ +import threading +from django.contrib.gis.geos.libgeos import lgeos, notice_h, error_h, CONTEXT_PTR + +class GEOSContextHandle(object): + """ + Python object representing a GEOS context handle. + """ + def __init__(self): + # Initializing the context handler for this thread with + # the notice and error handler. + self.ptr = lgeos.initGEOS_r(notice_h, error_h) + + def __del__(self): + if self.ptr: lgeos.finishGEOS_r(self.ptr) + +# Defining a thread-local object and creating an instance +# to hold a reference to GEOSContextHandle for this thread. +class GEOSContext(threading.local): + handle = None + +thread_context = GEOSContext() + +def call_geos_threaded(cfunc, args): + """ + This module-level routine calls the specified GEOS C thread-safe + function with the context for this current thread. + """ + # If a context handle does not exist for this thread, initialize one. + if not thread_context.handle: + thread_context.handle = GEOSContextHandle() + # Call the threaded GEOS routine with pointer of the context handle + # as the first argument. + return cfunc(thread_context.handle.ptr, *args) + +class GEOSFunc(object): + """ + Class that serves as a wrapper for GEOS C Functions, and will + use thread-safe function variants when available. + """ + def __init__(self, func_name): + try: + # GEOS thread-safe function signatures end with '_r', and + # take an additional context handle parameter. + self.cfunc = getattr(lgeos, func_name + '_r') + self.threaded = True + except AttributeError: + # Otherwise, use usual function. + self.cfunc = getattr(lgeos, func_name) + self.threaded = False + + def __call__(self, *args): + if self.threaded: + return call_geos_threaded(self.cfunc, args) + else: + return self.cfunc(*args) + + def __str__(self): + return self.cfunc.__name__ + + # argtypes property + def _get_argtypes(self): + return self.cfunc.argtypes + + def _set_argtypes(self, argtypes): + if self.threaded: + new_argtypes = [CONTEXT_PTR] + new_argtypes.extend(argtypes) + self.cfunc.argtypes = new_argtypes + else: + self.cfunc.argtypes = argtypes + + argtypes = property(_get_argtypes, _set_argtypes) + + # restype property + def _get_restype(self): + return self.cfunc.restype + + def _set_restype(self, restype): + self.cfunc.restype = restype + + restype = property(_get_restype, _set_restype) + + # errcheck property + def _get_errcheck(self): + return self.cfunc.errcheck + + def _set_errcheck(self, errcheck): + self.cfunc.errcheck = errcheck + + errcheck = property(_get_errcheck, _set_errcheck) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/prototypes/topology.py --- a/web/lib/django/contrib/gis/geos/prototypes/topology.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/prototypes/topology.py Tue May 25 02:43:45 2010 +0200 @@ -8,9 +8,10 @@ 'geos_simplify', 'geos_symdifference', 'geos_union', 'geos_relate'] from ctypes import c_char_p, c_double, c_int -from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR, GEOS_PREPARE +from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOS_PREPARE from django.contrib.gis.geos.prototypes.errcheck import check_geom, check_string from django.contrib.gis.geos.prototypes.geom import geos_char_p +from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc def topology(func, *args): "For GEOS unary topology functions." @@ -22,29 +23,29 @@ return func ### Topology Routines ### -geos_boundary = topology(lgeos.GEOSBoundary) -geos_buffer = topology(lgeos.GEOSBuffer, c_double, c_int) -geos_centroid = topology(lgeos.GEOSGetCentroid) -geos_convexhull = topology(lgeos.GEOSConvexHull) -geos_difference = topology(lgeos.GEOSDifference, GEOM_PTR) -geos_envelope = topology(lgeos.GEOSEnvelope) -geos_intersection = topology(lgeos.GEOSIntersection, GEOM_PTR) -geos_linemerge = topology(lgeos.GEOSLineMerge) -geos_pointonsurface = topology(lgeos.GEOSPointOnSurface) -geos_preservesimplify = topology(lgeos.GEOSTopologyPreserveSimplify, c_double) -geos_simplify = topology(lgeos.GEOSSimplify, c_double) -geos_symdifference = topology(lgeos.GEOSSymDifference, GEOM_PTR) -geos_union = topology(lgeos.GEOSUnion, GEOM_PTR) +geos_boundary = topology(GEOSFunc('GEOSBoundary')) +geos_buffer = topology(GEOSFunc('GEOSBuffer'), c_double, c_int) +geos_centroid = topology(GEOSFunc('GEOSGetCentroid')) +geos_convexhull = topology(GEOSFunc('GEOSConvexHull')) +geos_difference = topology(GEOSFunc('GEOSDifference'), GEOM_PTR) +geos_envelope = topology(GEOSFunc('GEOSEnvelope')) +geos_intersection = topology(GEOSFunc('GEOSIntersection'), GEOM_PTR) +geos_linemerge = topology(GEOSFunc('GEOSLineMerge')) +geos_pointonsurface = topology(GEOSFunc('GEOSPointOnSurface')) +geos_preservesimplify = topology(GEOSFunc('GEOSTopologyPreserveSimplify'), c_double) +geos_simplify = topology(GEOSFunc('GEOSSimplify'), c_double) +geos_symdifference = topology(GEOSFunc('GEOSSymDifference'), GEOM_PTR) +geos_union = topology(GEOSFunc('GEOSUnion'), GEOM_PTR) # GEOSRelate returns a string, not a geometry. -geos_relate = lgeos.GEOSRelate +geos_relate = GEOSFunc('GEOSRelate') geos_relate.argtypes = [GEOM_PTR, GEOM_PTR] geos_relate.restype = geos_char_p geos_relate.errcheck = check_string # Routines only in GEOS 3.1+ if GEOS_PREPARE: - geos_cascaded_union = lgeos.GEOSUnionCascaded + geos_cascaded_union = GEOSFunc('GEOSUnionCascaded') geos_cascaded_union.argtypes = [GEOM_PTR] geos_cascaded_union.restype = GEOM_PTR __all__.append('geos_cascaded_union') diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/tests/test_geos.py --- a/web/lib/django/contrib/gis/geos/tests/test_geos.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/tests/test_geos.py Tue May 25 02:43:45 2010 +0200 @@ -71,6 +71,49 @@ geom = fromstr(g.wkt) self.assertEqual(g.hex, geom.hex) + def test01b_hexewkb(self): + "Testing (HEX)EWKB output." + from binascii import a2b_hex + + pnt_2d = Point(0, 1, srid=4326) + pnt_3d = Point(0, 1, 2, srid=4326) + + # OGC-compliant HEX will not have SRID nor Z value. + self.assertEqual(ogc_hex, pnt_2d.hex) + self.assertEqual(ogc_hex, pnt_3d.hex) + + # HEXEWKB should be appropriate for its dimension -- have to use an + # a WKBWriter w/dimension set accordingly, else GEOS will insert + # garbage into 3D coordinate if there is none. Also, GEOS has a + # a bug in versions prior to 3.1 that puts the X coordinate in + # place of Z; an exception should be raised on those versions. + self.assertEqual(hexewkb_2d, pnt_2d.hexewkb) + if GEOS_PREPARE: + self.assertEqual(hexewkb_3d, pnt_3d.hexewkb) + self.assertEqual(True, GEOSGeometry(hexewkb_3d).hasz) + else: + try: + hexewkb = pnt_3d.hexewkb + except GEOSException: + pass + else: + self.fail('Should have raised GEOSException.') + + # Same for EWKB. + self.assertEqual(buffer(a2b_hex(hexewkb_2d)), pnt_2d.ewkb) + if GEOS_PREPARE: + self.assertEqual(buffer(a2b_hex(hexewkb_3d)), pnt_3d.ewkb) + else: + try: + ewkb = pnt_3d.ewkb + except GEOSException: + pass + else: + self.fail('Should have raised GEOSException') + + # Redundant sanity check. + self.assertEqual(4326, GEOSGeometry(hexewkb_2d).srid) + def test01c_kml(self): "Testing KML output." for tg in wkt_out: @@ -778,7 +821,7 @@ def test22_copy(self): "Testing use with the Python `copy` module." - import copy + import django.utils.copycompat as copy poly = GEOSGeometry('POLYGON((0 0, 0 23, 23 23, 23 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))') cpy1 = copy.copy(poly) cpy2 = copy.deepcopy(poly) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/geos/tests/test_geos_mutation.py --- a/web/lib/django/contrib/gis/geos/tests/test_geos_mutation.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/geos/tests/test_geos_mutation.py Tue May 25 02:43:45 2010 +0200 @@ -2,9 +2,11 @@ # Modified from original contribution by Aryeh Leib Taurog, which was # released under the New BSD license. import unittest + +import django.utils.copycompat as copy + from django.contrib.gis.geos import * from django.contrib.gis.geos.error import GEOSIndexError -import copy def getItem(o,i): return o[i] def delItem(o,i): del o[i] diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/management/commands/inspectdb.py --- a/web/lib/django/contrib/gis/management/commands/inspectdb.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/management/commands/inspectdb.py Tue May 25 02:43:45 2010 +0200 @@ -1,188 +1,32 @@ -""" - This overrides the traditional `inspectdb` command so that geographic databases - may be introspected. -""" - -from django.core.management.commands.inspectdb import Command as InspectCommand -from django.contrib.gis.db.backend import SpatialBackend - -class Command(InspectCommand): - - # Mapping from lower-case OGC type to the corresponding GeoDjango field. - geofield_mapping = {'point' : 'PointField', - 'linestring' : 'LineStringField', - 'polygon' : 'PolygonField', - 'multipoint' : 'MultiPointField', - 'multilinestring' : 'MultiLineStringField', - 'multipolygon' : 'MultiPolygonField', - 'geometrycollection' : 'GeometryCollectionField', - 'geometry' : 'GeometryField', - } - - def geometry_columns(self): - """ - Returns a datastructure of metadata information associated with the - `geometry_columns` (or equivalent) table. - """ - # The `geo_cols` is a dictionary data structure that holds information - # about any geographic columns in the database. - geo_cols = {} - def add_col(table, column, coldata): - if table in geo_cols: - # If table already has a geometry column. - geo_cols[table][column] = coldata - else: - # Otherwise, create a dictionary indexed by column. - geo_cols[table] = { column : coldata } +from optparse import make_option - if SpatialBackend.name == 'postgis': - # PostGIS holds all geographic column information in the `geometry_columns` table. - from django.contrib.gis.models import GeometryColumns - for geo_col in GeometryColumns.objects.all(): - table = geo_col.f_table_name - column = geo_col.f_geometry_column - coldata = {'type' : geo_col.type, 'srid' : geo_col.srid, 'dim' : geo_col.coord_dimension} - add_col(table, column, coldata) - return geo_cols - elif SpatialBackend.name == 'mysql': - # On MySQL have to get all table metadata before hand; this means walking through - # each table and seeing if any column types are spatial. Can't detect this with - # `cursor.description` (what the introspection module does) because all spatial types - # have the same integer type (255 for GEOMETRY). - from django.db import connection - cursor = connection.cursor() - cursor.execute('SHOW TABLES') - tables = cursor.fetchall(); - for table_tup in tables: - table = table_tup[0] - table_desc = cursor.execute('DESCRIBE `%s`' % table) - col_info = cursor.fetchall() - for column, typ, null, key, default, extra in col_info: - if typ in self.geofield_mapping: add_col(table, column, {'type' : typ}) - return geo_cols - else: - # TODO: Oracle (has incomplete `geometry_columns` -- have to parse - # SDO SQL to get specific type, SRID, and other information). - raise NotImplementedError('Geographic database inspection not available.') +from django.core.management.base import CommandError +from django.core.management.commands.inspectdb import Command as InspectDBCommand - def handle_inspection(self): - "Overloaded from Django's version to handle geographic database tables." - from django.db import connection - import keyword - - geo_cols = self.geometry_columns() - - table2model = lambda table_name: table_name.title().replace('_', '') - - cursor = connection.cursor() - yield "# This is an auto-generated Django model module." - yield "# You'll have to do the following manually to clean this up:" - yield "# * Rearrange models' order" - yield "# * Make sure each model has one field with primary_key=True" - yield "# Feel free to rename the models, but don't rename db_table values or field names." - yield "#" - yield "# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'" - yield "# into your database." - yield '' - yield 'from django.contrib.gis.db import models' - yield '' - for table_name in connection.introspection.get_table_list(cursor): - # Getting the geographic table dictionary. - geo_table = geo_cols.get(table_name, {}) +class Command(InspectDBCommand): + db_module = 'django.contrib.gis.db' + gis_tables = {} - yield 'class %s(models.Model):' % table2model(table_name) - try: - relations = connection.introspection.get_relations(cursor, table_name) - except NotImplementedError: - relations = {} - try: - indexes = connection.introspection.get_indexes(cursor, table_name) - except NotImplementedError: - indexes = {} - for i, row in enumerate(connection.introspection.get_table_description(cursor, table_name)): - att_name, iatt_name = row[0].lower(), row[0] - comment_notes = [] # Holds Field notes, to be displayed in a Python comment. - extra_params = {} # Holds Field parameters such as 'db_column'. - - if ' ' in att_name: - extra_params['db_column'] = att_name - att_name = att_name.replace(' ', '') - comment_notes.append('Field renamed to remove spaces.') - if keyword.iskeyword(att_name): - extra_params['db_column'] = att_name - att_name += '_field' - comment_notes.append('Field renamed because it was a Python reserved word.') - - if i in relations: - rel_to = relations[i][1] == table_name and "'self'" or table2model(relations[i][1]) - field_type = 'ForeignKey(%s' % rel_to - if att_name.endswith('_id'): - att_name = att_name[:-3] - else: - extra_params['db_column'] = att_name - else: - if iatt_name in geo_table: - ## Customization for Geographic Columns ## - geo_col = geo_table[iatt_name] - field_type = self.geofield_mapping[geo_col['type'].lower()] - # Adding extra keyword arguments for the SRID and dimension (if not defaults). - dim, srid = geo_col.get('dim', 2), geo_col.get('srid', 4326) - if dim != 2: extra_params['dim'] = dim - if srid != 4326: extra_params['srid'] = srid - else: - try: - field_type = connection.introspection.get_field_type(row[1], row) - except KeyError: - field_type = 'TextField' - comment_notes.append('This field type is a guess.') + def get_field_type(self, connection, table_name, row): + field_type, field_params, field_notes = super(Command, self).get_field_type(connection, table_name, row) + if field_type == 'GeometryField': + geo_col = row[0] + # Getting a more specific field type and any additional parameters + # from the `get_geometry_type` routine for the spatial backend. + field_type, geo_params = connection.introspection.get_geometry_type(table_name, geo_col) + field_params.update(geo_params) + # Adding the table name and column to the `gis_tables` dictionary, this + # allows us to track which tables need a GeoManager. + if table_name in self.gis_tables: + self.gis_tables[table_name].append(geo_col) + else: + self.gis_tables[table_name] = [geo_col] + return field_type, field_params, field_notes - # This is a hook for data_types_reverse to return a tuple of - # (field_type, extra_params_dict). - if type(field_type) is tuple: - field_type, new_params = field_type - extra_params.update(new_params) - - # Add max_length for all CharFields. - if field_type == 'CharField' and row[3]: - extra_params['max_length'] = row[3] - - if field_type == 'DecimalField': - extra_params['max_digits'] = row[4] - extra_params['decimal_places'] = row[5] - - # Add primary_key and unique, if necessary. - column_name = extra_params.get('db_column', att_name) - if column_name in indexes: - if indexes[column_name]['primary_key']: - extra_params['primary_key'] = True - elif indexes[column_name]['unique']: - extra_params['unique'] = True - - field_type += '(' - - # Don't output 'id = meta.AutoField(primary_key=True)', because - # that's assumed if it doesn't exist. - if att_name == 'id' and field_type == 'AutoField(' and extra_params == {'primary_key': True}: - continue - - # Add 'null' and 'blank', if the 'null_ok' flag was present in the - # table description. - if row[6]: # If it's NULL... - extra_params['blank'] = True - if not field_type in ('TextField(', 'CharField('): - extra_params['null'] = True - - field_desc = '%s = models.%s' % (att_name, field_type) - if extra_params: - if not field_desc.endswith('('): - field_desc += ', ' - field_desc += ', '.join(['%s=%r' % (k, v) for k, v in extra_params.items()]) - field_desc += ')' - if comment_notes: - field_desc += ' # ' + ' '.join(comment_notes) - yield ' %s' % field_desc - if table_name in geo_cols: - yield ' objects = models.GeoManager()' - yield ' class Meta:' - yield ' db_table = %r' % table_name - yield '' + def get_meta(self, table_name): + meta_lines = super(Command, self).get_meta(table_name) + if table_name in self.gis_tables: + # If the table is a geographic one, then we need make + # GeoManager the default manager for the model. + meta_lines.insert(0, ' objects = models.GeoManager()') + return meta_lines diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/measure.py --- a/web/lib/django/contrib/gis/measure.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/measure.py Tue May 25 02:43:45 2010 +0200 @@ -27,7 +27,7 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # """ -Distance and Area objects to allow for sensible and convienient calculation +Distance and Area objects to allow for sensible and convienient calculation and conversions. Authors: Robert Coup, Justin Bronn @@ -70,7 +70,7 @@ @classmethod def unit_attname(cls, unit_str): """ - Retrieves the unit attribute name for the given unit string. + Retrieves the unit attribute name for the given unit string. For example, if the given unit string is 'metre', 'm' would be returned. An exception is raised if an attribute cannot be found. """ @@ -165,51 +165,51 @@ self.m, self._default_unit = self.default_units(kwargs) if default_unit and isinstance(default_unit, str): self._default_unit = default_unit - + def __getattr__(self, name): if name in self.UNITS: return self.m / self.UNITS[name] else: raise AttributeError('Unknown unit type: %s' % name) - + def __repr__(self): return 'Distance(%s=%s)' % (self._default_unit, getattr(self, self._default_unit)) def __str__(self): return '%s %s' % (getattr(self, self._default_unit), self._default_unit) - + def __cmp__(self, other): if isinstance(other, Distance): return cmp(self.m, other.m) else: return NotImplemented - + def __add__(self, other): if isinstance(other, Distance): return Distance(default_unit=self._default_unit, m=(self.m + other.m)) else: raise TypeError('Distance must be added with Distance') - + def __iadd__(self, other): if isinstance(other, Distance): self.m += other.m return self else: raise TypeError('Distance must be added with Distance') - + def __sub__(self, other): if isinstance(other, Distance): return Distance(default_unit=self._default_unit, m=(self.m - other.m)) else: raise TypeError('Distance must be subtracted from Distance') - + def __isub__(self, other): if isinstance(other, Distance): self.m -= other.m return self else: raise TypeError('Distance must be subtracted from Distance') - + def __mul__(self, other): if isinstance(other, (int, float, long, Decimal)): return Distance(default_unit=self._default_unit, m=(self.m * float(other))) @@ -217,14 +217,17 @@ return Area(default_unit='sq_' + self._default_unit, sq_m=(self.m * other.m)) else: raise TypeError('Distance must be multiplied with number or Distance') - + def __imul__(self, other): if isinstance(other, (int, float, long, Decimal)): self.m *= float(other) return self else: raise TypeError('Distance must be multiplied with number') - + + def __rmul__(self, other): + return self * other + def __div__(self, other): if isinstance(other, (int, float, long, Decimal)): return Distance(default_unit=self._default_unit, m=(self.m / float(other))) @@ -251,13 +254,13 @@ self.sq_m, self._default_unit = self.default_units(kwargs) if default_unit and isinstance(default_unit, str): self._default_unit = default_unit - + def __getattr__(self, name): if name in self.UNITS: return self.sq_m / self.UNITS[name] else: raise AttributeError('Unknown unit type: ' + name) - + def __repr__(self): return 'Area(%s=%s)' % (self._default_unit, getattr(self, self._default_unit)) @@ -269,46 +272,49 @@ return cmp(self.sq_m, other.sq_m) else: return NotImplemented - + def __add__(self, other): if isinstance(other, Area): return Area(default_unit=self._default_unit, sq_m=(self.sq_m + other.sq_m)) else: raise TypeError('Area must be added with Area') - + def __iadd__(self, other): if isinstance(other, Area): self.sq_m += other.sq_m return self else: raise TypeError('Area must be added with Area') - + def __sub__(self, other): if isinstance(other, Area): return Area(default_unit=self._default_unit, sq_m=(self.sq_m - other.sq_m)) else: raise TypeError('Area must be subtracted from Area') - + def __isub__(self, other): if isinstance(other, Area): self.sq_m -= other.sq_m return self else: raise TypeError('Area must be subtracted from Area') - + def __mul__(self, other): if isinstance(other, (int, float, long, Decimal)): return Area(default_unit=self._default_unit, sq_m=(self.sq_m * float(other))) else: raise TypeError('Area must be multiplied with number') - + def __imul__(self, other): if isinstance(other, (int, float, long, Decimal)): self.sq_m *= float(other) return self else: raise TypeError('Area must be multiplied with number') - + + def __rmul__(self, other): + return self * other + def __div__(self, other): if isinstance(other, (int, float, long, Decimal)): return Area(default_unit=self._default_unit, sq_m=(self.sq_m / float(other))) @@ -324,7 +330,7 @@ def __nonzero__(self): return bool(self.sq_m) - + # Shortcuts D = Distance A = Area diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/models.py --- a/web/lib/django/contrib/gis/models.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/models.py Tue May 25 02:43:45 2010 +0200 @@ -1,233 +1,9 @@ -""" - Imports the SpatialRefSys and GeometryColumns models dependent on the - spatial database backend. -""" -import re -from django.conf import settings - -# Checking for the presence of GDAL (needed for the SpatialReference object) -from django.contrib.gis.gdal import HAS_GDAL, PYTHON23 -if HAS_GDAL: - from django.contrib.gis.gdal import SpatialReference - -class SpatialRefSysMixin(object): - """ - The SpatialRefSysMixin is a class used by the database-dependent - SpatialRefSys objects to reduce redundnant code. - """ - # For pulling out the spheroid from the spatial reference string. This - # regular expression is used only if the user does not have GDAL installed. - # TODO: Flattening not used in all ellipsoids, could also be a minor axis, - # or 'b' parameter. - spheroid_regex = re.compile(r'.+SPHEROID\[\"(?P.+)\",(?P\d+(\.\d+)?),(?P\d{3}\.\d+),') - - # For pulling out the units on platforms w/o GDAL installed. - # TODO: Figure out how to pull out angular units of projected coordinate system and - # fix for LOCAL_CS types. GDAL should be highly recommended for performing - # distance queries. - units_regex = re.compile(r'.+UNIT ?\["(?P[\w \'\(\)]+)", ?(?P[\d\.]+)(,AUTHORITY\["(?P[\w \'\(\)]+)","(?P\d+)"\])?\]([\w ]+)?(,AUTHORITY\["(?P[\w \'\(\)]+)","(?P\d+)"\])?\]$') - - def srs(self): - """ - Returns a GDAL SpatialReference object, if GDAL is installed. - """ - if HAS_GDAL: - # TODO: Is caching really necessary here? Is complexity worth it? - if hasattr(self, '_srs'): - # Returning a clone of the cached SpatialReference object. - return self._srs.clone() - else: - # Attempting to cache a SpatialReference object. - - # Trying to get from WKT first. - try: - self._srs = SpatialReference(self.wkt) - return self.srs - except Exception, msg: - pass - - try: - self._srs = SpatialReference(self.proj4text) - return self.srs - except Exception, msg: - pass - - raise Exception('Could not get OSR SpatialReference from WKT: %s\nError:\n%s' % (self.wkt, msg)) - else: - raise Exception('GDAL is not installed.') - srs = property(srs) - - def ellipsoid(self): - """ - Returns a tuple of the ellipsoid parameters: - (semimajor axis, semiminor axis, and inverse flattening). - """ - if HAS_GDAL: - return self.srs.ellipsoid - else: - m = self.spheroid_regex.match(self.wkt) - if m: return (float(m.group('major')), float(m.group('flattening'))) - else: return None - ellipsoid = property(ellipsoid) - - def name(self): - "Returns the projection name." - return self.srs.name - name = property(name) - - def spheroid(self): - "Returns the spheroid name for this spatial reference." - return self.srs['spheroid'] - spheroid = property(spheroid) - - def datum(self): - "Returns the datum for this spatial reference." - return self.srs['datum'] - datum = property(datum) - - def projected(self): - "Is this Spatial Reference projected?" - if HAS_GDAL: - return self.srs.projected - else: - return self.wkt.startswith('PROJCS') - projected = property(projected) - - def local(self): - "Is this Spatial Reference local?" - if HAS_GDAL: - return self.srs.local - else: - return self.wkt.startswith('LOCAL_CS') - local = property(local) - - def geographic(self): - "Is this Spatial Reference geographic?" - if HAS_GDAL: - return self.srs.geographic - else: - return self.wkt.startswith('GEOGCS') - geographic = property(geographic) +from django.db import connection - def linear_name(self): - "Returns the linear units name." - if HAS_GDAL: - return self.srs.linear_name - elif self.geographic: - return None - else: - m = self.units_regex.match(self.wkt) - return m.group('unit_name') - linear_name = property(linear_name) - - def linear_units(self): - "Returns the linear units." - if HAS_GDAL: - return self.srs.linear_units - elif self.geographic: - return None - else: - m = self.units_regex.match(self.wkt) - return m.group('unit') - linear_units = property(linear_units) - - def angular_name(self): - "Returns the name of the angular units." - if HAS_GDAL: - return self.srs.angular_name - elif self.projected: - return None - else: - m = self.units_regex.match(self.wkt) - return m.group('unit_name') - angular_name = property(angular_name) - - def angular_units(self): - "Returns the angular units." - if HAS_GDAL: - return self.srs.angular_units - elif self.projected: - return None - else: - m = self.units_regex.match(self.wkt) - return m.group('unit') - angular_units = property(angular_units) - - def units(self): - "Returns a tuple of the units and the name." - if self.projected or self.local: - return (self.linear_units, self.linear_name) - elif self.geographic: - return (self.angular_units, self.angular_name) - else: - return (None, None) - units = property(units) - - def get_units(cls, wkt): - """ - Class method used by GeometryField on initialization to - retrive the units on the given WKT, without having to use - any of the database fields. - """ - if HAS_GDAL: - return SpatialReference(wkt).units - else: - m = cls.units_regex.match(wkt) - return m.group('unit'), m.group('unit_name') - get_units = classmethod(get_units) - - def get_spheroid(cls, wkt, string=True): - """ - Class method used by GeometryField on initialization to - retrieve the `SPHEROID[..]` parameters from the given WKT. - """ - if HAS_GDAL: - srs = SpatialReference(wkt) - sphere_params = srs.ellipsoid - sphere_name = srs['spheroid'] - else: - m = cls.spheroid_regex.match(wkt) - if m: - sphere_params = (float(m.group('major')), float(m.group('flattening'))) - sphere_name = m.group('name') - else: - return None - - if not string: - return sphere_name, sphere_params - else: - # `string` parameter used to place in format acceptable by PostGIS - if len(sphere_params) == 3: - radius, flattening = sphere_params[0], sphere_params[2] - else: - radius, flattening = sphere_params - return 'SPHEROID["%s",%s,%s]' % (sphere_name, radius, flattening) - get_spheroid = classmethod(get_spheroid) - - def __unicode__(self): - """ - Returns the string representation. If GDAL is installed, - it will be 'pretty' OGC WKT. - """ - try: - return unicode(self.srs) - except: - return unicode(self.wkt) - -# Django test suite on 2.3 platforms will choke on code inside this -# conditional. -if not PYTHON23: - try: - # try/except'ing the importation of SpatialBackend. Have to fail - # silently because this module may be inadvertently invoked by - # non-GeoDjango users (e.g., when the Django test suite executes - # the models.py of all contrib apps). - from django.contrib.gis.db.backend import SpatialBackend - if SpatialBackend.mysql: raise Exception - - # Exposing the SpatialRefSys and GeometryColumns models. - class SpatialRefSys(SpatialBackend.SpatialRefSys, SpatialRefSysMixin): - pass - GeometryColumns = SpatialBackend.GeometryColumns - except: - pass +if (hasattr(connection.ops, 'spatial_version') and + not connection.ops.mysql): + # Getting the `SpatialRefSys` and `GeometryColumns` + # models for the default spatial backend. These + # aliases are provided for backwards-compatibility. + SpatialRefSys = connection.ops.spatial_ref_sys() + GeometryColumns = connection.ops.geometry_columns() diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/sitemaps/views.py --- a/web/lib/django/contrib/gis/sitemaps/views.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/sitemaps/views.py Tue May 25 02:43:45 2010 +0200 @@ -1,11 +1,11 @@ from django.http import HttpResponse, Http404 from django.template import loader -from django.contrib.gis.db.backend import SpatialBackend from django.contrib.sites.models import Site from django.core import urlresolvers from django.core.paginator import EmptyPage, PageNotAnInteger +from django.contrib.gis.db.models.fields import GeometryField +from django.db import connections, DEFAULT_DB_ALIAS from django.db.models import get_model -from django.contrib.gis.db.models.fields import GeometryField from django.utils.encoding import smart_str from django.contrib.gis.shortcuts import render_to_kml, render_to_kmz @@ -25,7 +25,7 @@ pages = site.paginator.num_pages sitemap_url = urlresolvers.reverse('django.contrib.gis.sitemaps.views.sitemap', kwargs={'section': section}) sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url)) - + if pages > 1: for page in range(2, pages+1): sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page)) @@ -59,7 +59,7 @@ xml = smart_str(loader.render_to_string('gis/sitemaps/geo_sitemap.xml', {'urlset': urls})) return HttpResponse(xml, mimetype='application/xml') -def kml(request, label, model, field_name=None, compress=False): +def kml(request, label, model, field_name=None, compress=False, using=DEFAULT_DB_ALIAS): """ This view generates KML for the given app label, model, and field name. @@ -79,17 +79,19 @@ except: raise Http404('Invalid geometry field.') - if SpatialBackend.postgis: + connection = connections[using] + + if connection.ops.postgis: # PostGIS will take care of transformation. - placemarks = klass._default_manager.kml(field_name=field_name) + placemarks = klass._default_manager.using(using).kml(field_name=field_name) else: # There's no KML method on Oracle or MySQL, so we use the `kml` # attribute of the lazy geometry instead. placemarks = [] - if SpatialBackend.oracle: - qs = klass._default_manager.transform(4326, field_name=field_name) + if connection.ops.oracle: + qs = klass._default_manager.using(using).transform(4326, field_name=field_name) else: - qs = klass._default_manager.all() + qs = klass._default_manager.using(using).all() for mod in qs: setattr(mod, 'kml', getattr(mod, field_name).kml) placemarks.append(mod) @@ -101,8 +103,8 @@ render = render_to_kml return render('gis/kml/placemarks.kml', {'places' : placemarks}) -def kmz(request, label, model, field_name=None): +def kmz(request, label, model, field_name=None, using=DEFAULT_DB_ALIAS): """ This view returns KMZ for the given app label, model, and field name. """ - return kml(request, label, model, field_name, True) + return kml(request, label, model, field_name, compress=True, using=using) diff -r b758351d191f -r cc9b7e14412b web/lib/django/contrib/gis/templates/gis/admin/openlayers.js --- a/web/lib/django/contrib/gis/templates/gis/admin/openlayers.js Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/contrib/gis/templates/gis/admin/openlayers.js Tue May 25 02:43:45 2010 +0200 @@ -1,6 +1,7 @@ {# Author: Justin Bronn, Travis Pinney & Dane Springmeyer #} {% block vars %}var {{ module }} = {}; -{{ module }}.map = null; {{ module }}.controls = null; {{ module }}.panel = null; {{ module }}.re = new RegExp("^SRID=\d+;(.+)", "i"); {{ module }}.layers = {}; +{{ module }}.map = null; {{ module }}.controls = null; {{ module }}.panel = null; {{ module }}.re = new RegExp("^SRID=\d+;(.+)", "i"); {{ module }}.layers = {}; +{{ module }}.modifiable = {{ modifiable|yesno:"true,false" }}; {{ module }}.wkt_f = new OpenLayers.Format.WKT(); {{ module }}.is_collection = {{ is_collection|yesno:"true,false" }}; {{ module }}.collection_type = '{{ collection_type }}'; @@ -43,10 +44,10 @@ {{ module }}.modify_wkt = function(event){ if ({{ module }}.is_collection){ if ({{ module }}.is_point){ - {{ module }}.add_wkt(event); + {{ module }}.add_wkt(event); return; } else { - // When modifying the selected components are added to the + // When modifying the selected components are added to the // vector layer so we only increment to the `num_geom` value. var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}()); for (var i = 0; i < {{ module }}.num_geom; i++){ @@ -69,7 +70,7 @@ {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }}); } // Add Select control -{{ module }}.addSelectControl = function(){ +{{ module }}.addSelectControl = function(){ var select = new OpenLayers.Control.SelectFeature({{ module }}.layers.vector, {'toggle' : true, 'clickout' : true}); {{ module }}.map.addControl(select); select.activate(); @@ -88,16 +89,20 @@ } else if ({{ module }}.is_point){ draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'}); } - {% if modifiable %} - var mod = new OpenLayers.Control.ModifyFeature(lyr, {'displayClass': 'olControlModifyFeature'}); - {{ module }}.controls = [nav, draw_ctl, mod]; - {% else %} - {{ module }}.controls = [nav, darw_ctl]; - {% endif %} + if ({{ module }}.modifiable){ + var mod = new OpenLayers.Control.ModifyFeature(lyr, {'displayClass': 'olControlModifyFeature'}); + {{ module }}.controls = [nav, draw_ctl, mod]; + } else { + if(!lyr.features.length){ + {{ module }}.controls = [nav, draw_ctl]; + } else { + {{ module }}.controls = [nav]; + } + } } {{ module }}.init = function(){ {% block map_options %}// The options hash, w/ zoom, resolution, and projection settings. - var options = { + var options = { {% autoescape off %}{% for item in map_options.items %} '{{ item.0 }}' : {{ item.1 }}{% if not forloop.last %},{% endif %} {% endfor %}{% endautoescape %} };{% endblock %} // The admin map for this geometry field. @@ -112,7 +117,7 @@ // Read WKT from the text field. var wkt = document.getElementById('{{ id }}').value; if (wkt){ - // After reading into geometry, immediately write back to + // After reading into geometry, immediately write back to // WKT