magic-removal: Merged to [2059]

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2060 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-01-19 01:09:28 +00:00
parent 58605bcfe3
commit 233254d634
6 changed files with 30 additions and 33 deletions

View File

@ -16,10 +16,10 @@ def compile_messages():
sys.exit(1) sys.exit(1)
for (dirpath, dirnames, filenames) in os.walk(basedir): for (dirpath, dirnames, filenames) in os.walk(basedir):
for file in filenames: for f in filenames:
if file.endswith('.po'): if f.endswith('.po'):
sys.stderr.write('processing file %s in %s\n' % (file, dirpath)) sys.stderr.write('processing file %s in %s\n' % (f, dirpath))
pf = os.path.splitext(os.path.join(dirpath, file))[0] pf = os.path.splitext(os.path.join(dirpath, f))[0]
cmd = 'msgfmt -o "%s.mo" "%s.po"' % (pf, pf) cmd = 'msgfmt -o "%s.mo" "%s.po"' % (pf, pf)
os.system(cmd) os.system(cmd)

View File

@ -2,7 +2,6 @@
import os import os
import sys import sys
import getopt
def unique_messages(): def unique_messages():
basedir = None basedir = None
@ -16,10 +15,10 @@ def unique_messages():
sys.exit(1) sys.exit(1)
for (dirpath, dirnames, filenames) in os.walk(basedir): for (dirpath, dirnames, filenames) in os.walk(basedir):
for file in filenames: for f in filenames:
if file.endswith('.po'): if f.endswith('.po'):
sys.stderr.write('processing file %s in %s\n' % (file, dirpath)) sys.stderr.write('processing file %s in %s\n' % (f, dirpath))
pf = os.path.splitext(os.path.join(dirpath, file))[0] pf = os.path.splitext(os.path.join(dirpath, f))[0]
cmd = 'msguniq "%s.po"' % pf cmd = 'msguniq "%s.po"' % pf
stdout = os.popen(cmd) stdout = os.popen(cmd)
msg = stdout.read() msg = stdout.read()

View File

@ -12,13 +12,14 @@ DOTS = ['·', '*', '\xe2\x80\xa2', '•', '•', '•']
unencoded_ampersands_re = re.compile(r'&(?!(\w+|#\d+);)') unencoded_ampersands_re = re.compile(r'&(?!(\w+|#\d+);)')
word_split_re = re.compile(r'(\s+)') word_split_re = re.compile(r'(\s+)')
punctuation_re = re.compile('^(?P<lead>(?:%s)*)(?P<middle>.*?)(?P<trail>(?:%s)*)$' % \ punctuation_re = re.compile('^(?P<lead>(?:%s)*)(?P<middle>.*?)(?P<trail>(?:%s)*)$' % \
('|'.join([re.escape(p) for p in LEADING_PUNCTUATION]), ('|'.join([re.escape(x) for x in LEADING_PUNCTUATION]),
'|'.join([re.escape(p) for p in TRAILING_PUNCTUATION]))) '|'.join([re.escape(x) for x in TRAILING_PUNCTUATION])))
simple_email_re = re.compile(r'^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$') simple_email_re = re.compile(r'^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$')
link_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\s>]+') link_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\s>]+')
html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE) html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE)
hard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join([re.escape(d) for d in DOTS]), re.DOTALL) hard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join([re.escape(x) for x in DOTS]), re.DOTALL)
trailing_empty_content_re = re.compile(r'(?:<p>(?:&nbsp;|\s|<br \/>)*?</p>\s*)+\Z') trailing_empty_content_re = re.compile(r'(?:<p>(?:&nbsp;|\s|<br \/>)*?</p>\s*)+\Z')
del x # Temporary variable
def escape(html): def escape(html):
"Returns the given HTML with ampersands, quotes and carets encoded" "Returns the given HTML with ampersands, quotes and carets encoded"

View File

@ -2,7 +2,7 @@ from django.conf import settings
from django.template import Template, Context, TemplateDoesNotExist from django.template import Template, Context, TemplateDoesNotExist
from django.utils.html import escape from django.utils.html import escape
from django.http import HttpResponseServerError, HttpResponseNotFound from django.http import HttpResponseServerError, HttpResponseNotFound
import inspect, os, re, sys import os, re
from itertools import count, izip from itertools import count, izip
from os.path import dirname, join as pathjoin from os.path import dirname, join as pathjoin

View File

@ -1,12 +1,9 @@
import re
import os
import gettext as gettext_module
from django import http from django import http
from django.utils.translation import check_for_language, activate, to_locale, get_language from django.utils.translation import check_for_language, activate, to_locale, get_language
from django.utils.text import javascript_quote from django.utils.text import javascript_quote
from django.conf import settings from django.conf import settings
import os
import gettext as gettext_module
def set_language(request): def set_language(request):
""" """
@ -145,7 +142,7 @@ def javascript_catalog(request, domain='djangojs', packages=None):
for path in paths: for path in paths:
try: try:
catalog = gettext_module.translation(domain, path, [default_locale]) catalog = gettext_module.translation(domain, path, [default_locale])
except IOError, e: except IOError:
catalog = None catalog = None
if catalog is not None: if catalog is not None:
t.update(catalog._catalog) t.update(catalog._catalog)
@ -154,7 +151,7 @@ def javascript_catalog(request, domain='djangojs', packages=None):
for path in paths: for path in paths:
try: try:
catalog = gettext_module.translation(domain, path, [locale]) catalog = gettext_module.translation(domain, path, [locale])
except IOError, e: except IOError:
catalog = None catalog = None
if catalog is not None: if catalog is not None:
t.update(catalog._catalog) t.update(catalog._catalog)

View File

@ -447,24 +447,24 @@ Notes:
en-us). en-us).
.. _LANGUAGES setting: http://www.djangoproject.com/documentation/settings/#languages .. _LANGUAGES setting: http://www.djangoproject.com/documentation/settings/#languages
* the LocaleMiddleware can only select languages for which there is a * The ``LocaleMiddleware`` can only select languages for which there is a
django provided base translation. If you want to provide translations Django-provided base translation. If you want to provide translations
for your application that aren't already in the set of translations for your application that aren't already in the set of translations
in Djangos source tree, you will want to at least provide basic in Django's source tree, you'll want to provide at least basic
translations for that language. For example Django uses technical translations for that language. For example, Django uses technical
message IDs to translate date formats and time formats - so you will message IDs to translate date formats and time formats -- so you will
need at least those translations for the system to work correctly. need at least those translations for the system to work correctly.
A good starting point is to just copy over the english ``.po`` file A good starting point is to copy the English ``.po`` file and to
and to translate at least the technical messages and maybe the validator translate at least the technical messages -- maybe the validator
messages, too. messages, too.
Technical message IDs are easily recognized by them being all upper case. Technical message IDs are easily recognized; they're all upper case. You
You don't translate the message ID as with other messages, you provide don't translate the message ID as with other messages, you provide the
the correct local variant on the provided english value. For example with correct local variant on the provided English value. For example, with
``DATETIME_FORMAT`` (or ``DATE_FORMAT`` or ``TIME_FORMAT``), this would ``DATETIME_FORMAT`` (or ``DATE_FORMAT`` or ``TIME_FORMAT``), this would
be the format string that you want to use in your language. The format be the format string that you want to use in your language. The format
is identical to the ``now`` tag date formattings. is identical to the format strings used by the ``now`` template tag.
Once ``LocaleMiddleware`` determines the user's preference, it makes this Once ``LocaleMiddleware`` determines the user's preference, it makes this
preference available as ``request.LANGUAGE_CODE`` for each `request object`_. preference available as ``request.LANGUAGE_CODE`` for each `request object`_.