Converted usage of ugettext* functions to their gettext* aliases
Thanks Tim Graham for the review.
This commit is contained in:
parent
4353640ea9
commit
c651331b34
|
@ -9,7 +9,7 @@ from django.core.exceptions import PermissionDenied
|
||||||
from django.db import router
|
from django.db import router
|
||||||
from django.template.response import TemplateResponse
|
from django.template.response import TemplateResponse
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
from django.utils.translation import gettext as _, gettext_lazy
|
||||||
|
|
||||||
|
|
||||||
def delete_selected(modeladmin, request, queryset):
|
def delete_selected(modeladmin, request, queryset):
|
||||||
|
@ -84,4 +84,4 @@ def delete_selected(modeladmin, request, queryset):
|
||||||
], context)
|
], context)
|
||||||
|
|
||||||
|
|
||||||
delete_selected.short_description = ugettext_lazy("Delete selected %(verbose_name_plural)s")
|
delete_selected.short_description = gettext_lazy("Delete selected %(verbose_name_plural)s")
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.contrib.admin.checks import check_admin_app, check_dependencies
|
from django.contrib.admin.checks import check_admin_app, check_dependencies
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class SimpleAdminConfig(AppConfig):
|
class SimpleAdminConfig(AppConfig):
|
||||||
|
|
|
@ -15,7 +15,7 @@ from django.core.exceptions import ImproperlyConfigured, ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class ListFilter:
|
class ListFilter:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm
|
from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class AdminAuthenticationForm(AuthenticationForm):
|
class AdminAuthenticationForm(AuthenticationForm):
|
||||||
|
|
|
@ -13,7 +13,7 @@ from django.template.defaultfilters import capfirst, linebreaksbr
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.html import conditional_escape, format_html
|
from django.utils.html import conditional_escape, format_html
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
|
|
||||||
ACTION_CHECKBOX_NAME = '_selected_action'
|
ACTION_CHECKBOX_NAME = '_selected_action'
|
||||||
|
|
||||||
|
@ -290,10 +290,10 @@ class InlineAdminFormSet:
|
||||||
'name': '#%s' % self.formset.prefix,
|
'name': '#%s' % self.formset.prefix,
|
||||||
'options': {
|
'options': {
|
||||||
'prefix': self.formset.prefix,
|
'prefix': self.formset.prefix,
|
||||||
'addText': ugettext('Add another %(verbose_name)s') % {
|
'addText': gettext('Add another %(verbose_name)s') % {
|
||||||
'verbose_name': capfirst(verbose_name),
|
'verbose_name': capfirst(verbose_name),
|
||||||
},
|
},
|
||||||
'deleteText': ugettext('Remove'),
|
'deleteText': gettext('Remove'),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.urls import NoReverseMatch, reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.text import get_text_list
|
from django.utils.text import get_text_list
|
||||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
|
|
||||||
ADDITION = 1
|
ADDITION = 1
|
||||||
CHANGE = 2
|
CHANGE = 2
|
||||||
|
@ -68,16 +68,16 @@ class LogEntry(models.Model):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if self.is_addition():
|
if self.is_addition():
|
||||||
return ugettext('Added "%(object)s".') % {'object': self.object_repr}
|
return gettext('Added "%(object)s".') % {'object': self.object_repr}
|
||||||
elif self.is_change():
|
elif self.is_change():
|
||||||
return ugettext('Changed "%(object)s" - %(changes)s') % {
|
return gettext('Changed "%(object)s" - %(changes)s') % {
|
||||||
'object': self.object_repr,
|
'object': self.object_repr,
|
||||||
'changes': self.get_change_message(),
|
'changes': self.get_change_message(),
|
||||||
}
|
}
|
||||||
elif self.is_deletion():
|
elif self.is_deletion():
|
||||||
return ugettext('Deleted "%(object)s."') % {'object': self.object_repr}
|
return gettext('Deleted "%(object)s."') % {'object': self.object_repr}
|
||||||
|
|
||||||
return ugettext('LogEntry Object')
|
return gettext('LogEntry Object')
|
||||||
|
|
||||||
def is_addition(self):
|
def is_addition(self):
|
||||||
return self.action_flag == ADDITION
|
return self.action_flag == ADDITION
|
||||||
|
@ -102,29 +102,29 @@ class LogEntry(models.Model):
|
||||||
for sub_message in change_message:
|
for sub_message in change_message:
|
||||||
if 'added' in sub_message:
|
if 'added' in sub_message:
|
||||||
if sub_message['added']:
|
if sub_message['added']:
|
||||||
sub_message['added']['name'] = ugettext(sub_message['added']['name'])
|
sub_message['added']['name'] = gettext(sub_message['added']['name'])
|
||||||
messages.append(ugettext('Added {name} "{object}".').format(**sub_message['added']))
|
messages.append(gettext('Added {name} "{object}".').format(**sub_message['added']))
|
||||||
else:
|
else:
|
||||||
messages.append(ugettext('Added.'))
|
messages.append(gettext('Added.'))
|
||||||
|
|
||||||
elif 'changed' in sub_message:
|
elif 'changed' in sub_message:
|
||||||
sub_message['changed']['fields'] = get_text_list(
|
sub_message['changed']['fields'] = get_text_list(
|
||||||
sub_message['changed']['fields'], ugettext('and')
|
sub_message['changed']['fields'], gettext('and')
|
||||||
)
|
)
|
||||||
if 'name' in sub_message['changed']:
|
if 'name' in sub_message['changed']:
|
||||||
sub_message['changed']['name'] = ugettext(sub_message['changed']['name'])
|
sub_message['changed']['name'] = gettext(sub_message['changed']['name'])
|
||||||
messages.append(ugettext('Changed {fields} for {name} "{object}".').format(
|
messages.append(gettext('Changed {fields} for {name} "{object}".').format(
|
||||||
**sub_message['changed']
|
**sub_message['changed']
|
||||||
))
|
))
|
||||||
else:
|
else:
|
||||||
messages.append(ugettext('Changed {fields}.').format(**sub_message['changed']))
|
messages.append(gettext('Changed {fields}.').format(**sub_message['changed']))
|
||||||
|
|
||||||
elif 'deleted' in sub_message:
|
elif 'deleted' in sub_message:
|
||||||
sub_message['deleted']['name'] = ugettext(sub_message['deleted']['name'])
|
sub_message['deleted']['name'] = gettext(sub_message['deleted']['name'])
|
||||||
messages.append(ugettext('Deleted {name} "{object}".').format(**sub_message['deleted']))
|
messages.append(gettext('Deleted {name} "{object}".').format(**sub_message['deleted']))
|
||||||
|
|
||||||
change_message = ' '.join(msg[0].upper() + msg[1:] for msg in messages)
|
change_message = ' '.join(msg[0].upper() + msg[1:] for msg in messages)
|
||||||
return change_message or ugettext('No fields changed.')
|
return change_message or gettext('No fields changed.')
|
||||||
else:
|
else:
|
||||||
return self.change_message
|
return self.change_message
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ from django.utils.html import format_html
|
||||||
from django.utils.http import urlencode
|
from django.utils.http import urlencode
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.text import capfirst, format_lazy, get_text_list
|
from django.utils.text import capfirst, format_lazy, get_text_list
|
||||||
from django.utils.translation import ugettext as _, ungettext
|
from django.utils.translation import gettext as _, ngettext
|
||||||
from django.views.decorators.csrf import csrf_protect
|
from django.views.decorators.csrf import csrf_protect
|
||||||
from django.views.generic import RedirectView
|
from django.views.generic import RedirectView
|
||||||
|
|
||||||
|
@ -1609,7 +1609,7 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
changecount += 1
|
changecount += 1
|
||||||
|
|
||||||
if changecount:
|
if changecount:
|
||||||
msg = ungettext(
|
msg = ngettext(
|
||||||
"%(count)s %(name)s was changed successfully.",
|
"%(count)s %(name)s was changed successfully.",
|
||||||
"%(count)s %(name)s were changed successfully.",
|
"%(count)s %(name)s were changed successfully.",
|
||||||
changecount
|
changecount
|
||||||
|
@ -1641,7 +1641,7 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
else:
|
else:
|
||||||
action_form = None
|
action_form = None
|
||||||
|
|
||||||
selection_note_all = ungettext(
|
selection_note_all = ngettext(
|
||||||
'%(total_count)s selected',
|
'%(total_count)s selected',
|
||||||
'All %(total_count)s selected',
|
'All %(total_count)s selected',
|
||||||
cl.result_count
|
cl.result_count
|
||||||
|
|
|
@ -10,7 +10,7 @@ from django.http import Http404, HttpResponseRedirect
|
||||||
from django.template.response import TemplateResponse
|
from django.template.response import TemplateResponse
|
||||||
from django.urls import NoReverseMatch, reverse
|
from django.urls import NoReverseMatch, reverse
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
from django.utils.translation import gettext as _, gettext_lazy
|
||||||
from django.views.decorators.cache import never_cache
|
from django.views.decorators.cache import never_cache
|
||||||
from django.views.decorators.csrf import csrf_protect
|
from django.views.decorators.csrf import csrf_protect
|
||||||
from django.views.i18n import JavaScriptCatalog
|
from django.views.i18n import JavaScriptCatalog
|
||||||
|
@ -36,13 +36,13 @@ class AdminSite:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Text to put at the end of each page's <title>.
|
# Text to put at the end of each page's <title>.
|
||||||
site_title = ugettext_lazy('Django site admin')
|
site_title = gettext_lazy('Django site admin')
|
||||||
|
|
||||||
# Text to put in each page's <h1>.
|
# Text to put in each page's <h1>.
|
||||||
site_header = ugettext_lazy('Django administration')
|
site_header = gettext_lazy('Django administration')
|
||||||
|
|
||||||
# Text to put at the top of the admin index page.
|
# Text to put at the top of the admin index page.
|
||||||
index_title = ugettext_lazy('Site administration')
|
index_title = gettext_lazy('Site administration')
|
||||||
|
|
||||||
# URL for the "View site" link at the top of each admin page.
|
# URL for the "View site" link at the top of each admin page.
|
||||||
site_url = '/'
|
site_url = '/'
|
||||||
|
|
|
@ -19,7 +19,7 @@ from django.utils.encoding import force_text
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
register = Library()
|
register = Library()
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.contrib.staticfiles.testing import StaticLiveServerTestCase
|
||||||
from django.test import modify_settings
|
from django.test import modify_settings
|
||||||
from django.test.selenium import SeleniumTestCase
|
from django.test.selenium import SeleniumTestCase
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
|
|
||||||
class CSPMiddleware(MiddlewareMixin):
|
class CSPMiddleware(MiddlewareMixin):
|
||||||
|
|
|
@ -14,9 +14,7 @@ from django.utils import formats, timezone
|
||||||
from django.utils.encoding import force_text, smart_text
|
from django.utils.encoding import force_text, smart_text
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import (
|
from django.utils.translation import ngettext, override as translation_override
|
||||||
override as translation_override, ungettext,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class FieldIsAForeignKeyColumnName(Exception):
|
class FieldIsAForeignKeyColumnName(Exception):
|
||||||
|
@ -271,7 +269,7 @@ def model_ngettext(obj, n=None):
|
||||||
obj = obj.model
|
obj = obj.model
|
||||||
d = model_format_dict(obj)
|
d = model_format_dict(obj)
|
||||||
singular, plural = d["verbose_name"], d["verbose_name_plural"]
|
singular, plural = d["verbose_name"], d["verbose_name_plural"]
|
||||||
return ungettext(singular, plural, n or 0)
|
return ngettext(singular, plural, n or 0)
|
||||||
|
|
||||||
|
|
||||||
def lookup_field(name, obj, model_admin=None):
|
def lookup_field(name, obj, model_admin=None):
|
||||||
|
|
|
@ -18,7 +18,7 @@ from django.db import models
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.http import urlencode
|
from django.utils.http import urlencode
|
||||||
from django.utils.translation import ugettext
|
from django.utils.translation import gettext
|
||||||
|
|
||||||
# Changelist settings
|
# Changelist settings
|
||||||
ALL_VAR = 'all'
|
ALL_VAR = 'all'
|
||||||
|
@ -76,9 +76,9 @@ class ChangeList:
|
||||||
self.queryset = self.get_queryset(request)
|
self.queryset = self.get_queryset(request)
|
||||||
self.get_results(request)
|
self.get_results(request)
|
||||||
if self.is_popup:
|
if self.is_popup:
|
||||||
title = ugettext('Select %s')
|
title = gettext('Select %s')
|
||||||
else:
|
else:
|
||||||
title = ugettext('Select %s to change')
|
title = gettext('Select %s to change')
|
||||||
self.title = title % force_text(self.opts.verbose_name)
|
self.title = title % force_text(self.opts.verbose_name)
|
||||||
self.pk_attname = self.lookup_opts.pk.attname
|
self.pk_attname = self.lookup_opts.pk.attname
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ from django.utils.encoding import force_text
|
||||||
from django.utils.html import smart_urlquote
|
from django.utils.html import smart_urlquote
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.text import Truncator
|
from django.utils.text import Truncator
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
|
|
||||||
class FilteredSelectMultiple(forms.SelectMultiple):
|
class FilteredSelectMultiple(forms.SelectMultiple):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class AdminDocsConfig(AppConfig):
|
class AdminDocsConfig(AppConfig):
|
||||||
|
|
|
@ -20,7 +20,7 @@ from django.utils.inspect import (
|
||||||
func_accepts_kwargs, func_accepts_var_args, func_has_no_args,
|
func_accepts_kwargs, func_accepts_var_args, func_has_no_args,
|
||||||
get_func_full_args,
|
get_func_full_args,
|
||||||
)
|
)
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
# Exclude methods starting with these strings from documentation
|
# Exclude methods starting with these strings from documentation
|
||||||
|
|
|
@ -16,7 +16,7 @@ from django.urls import reverse
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
from django.views.decorators.csrf import csrf_protect
|
from django.views.decorators.csrf import csrf_protect
|
||||||
from django.views.decorators.debug import sensitive_post_parameters
|
from django.views.decorators.debug import sensitive_post_parameters
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ class UserAdmin(admin.ModelAdmin):
|
||||||
form.save()
|
form.save()
|
||||||
change_message = self.construct_change_message(request, form, None)
|
change_message = self.construct_change_message(request, form, None)
|
||||||
self.log_change(request, user, change_message)
|
self.log_change(request, user, change_message)
|
||||||
msg = ugettext('Password changed successfully.')
|
msg = gettext('Password changed successfully.')
|
||||||
messages.success(request, msg)
|
messages.success(request, msg)
|
||||||
update_session_auth_hash(request, form.user)
|
update_session_auth_hash(request, form.user)
|
||||||
return HttpResponseRedirect(
|
return HttpResponseRedirect(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
from django.db.models.signals import post_migrate
|
from django.db.models.signals import post_migrate
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .checks import check_models_permissions, check_user_model
|
from .checks import check_models_permissions, check_user_model
|
||||||
from .management import create_permissions
|
from .management import create_permissions
|
||||||
|
|
|
@ -11,7 +11,7 @@ from django.contrib.auth.hashers import (
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.crypto import get_random_string, salted_hmac
|
from django.utils.crypto import get_random_string, salted_hmac
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class BaseUserManager(models.Manager):
|
class BaseUserManager(models.Manager):
|
||||||
|
|
|
@ -15,7 +15,7 @@ from django.template import loader
|
||||||
from django.utils.encoding import force_bytes
|
from django.utils.encoding import force_bytes
|
||||||
from django.utils.http import urlsafe_base64_encode
|
from django.utils.http import urlsafe_base64_encode
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
|
|
||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
|
|
||||||
|
@ -27,15 +27,15 @@ class ReadOnlyPasswordHashWidget(forms.Widget):
|
||||||
context = super().get_context(name, value, attrs)
|
context = super().get_context(name, value, attrs)
|
||||||
summary = []
|
summary = []
|
||||||
if not value or value.startswith(UNUSABLE_PASSWORD_PREFIX):
|
if not value or value.startswith(UNUSABLE_PASSWORD_PREFIX):
|
||||||
summary.append({'label': ugettext("No password set.")})
|
summary.append({'label': gettext("No password set.")})
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
hasher = identify_hasher(value)
|
hasher = identify_hasher(value)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
summary.append({'label': ugettext("Invalid password format or unknown hashing algorithm.")})
|
summary.append({'label': gettext("Invalid password format or unknown hashing algorithm.")})
|
||||||
else:
|
else:
|
||||||
for key, value_ in hasher.safe_summary(value).items():
|
for key, value_ in hasher.safe_summary(value).items():
|
||||||
summary.append({'label': ugettext(key), 'value': value_})
|
summary.append({'label': gettext(key), 'value': value_})
|
||||||
context['summary'] = summary
|
context['summary'] = summary
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ from django.utils.crypto import (
|
||||||
)
|
)
|
||||||
from django.utils.encoding import force_bytes, force_text
|
from django.utils.encoding import force_bytes, force_text
|
||||||
from django.utils.module_loading import import_string
|
from django.utils.module_loading import import_string
|
||||||
from django.utils.translation import ugettext_noop as _
|
from django.utils.translation import gettext_noop as _
|
||||||
|
|
||||||
UNUSABLE_PASSWORD_PREFIX = '!' # This will never be a valid encoded hash
|
UNUSABLE_PASSWORD_PREFIX = '!' # This will never be a valid encoded hash
|
||||||
UNUSABLE_PASSWORD_SUFFIX_LENGTH = 40 # number of random chars to add after UNUSABLE_PASSWORD_PREFIX
|
UNUSABLE_PASSWORD_SUFFIX_LENGTH = 40 # number of random chars to add after UNUSABLE_PASSWORD_PREFIX
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django.core.mail import send_mail
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.manager import EmptyManager
|
from django.db.models.manager import EmptyManager
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .validators import UnicodeUsernameValidator
|
from .validators import UnicodeUsernameValidator
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.utils.encoding import force_text
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
from django.utils.module_loading import import_string
|
from django.utils.module_loading import import_string
|
||||||
from django.utils.translation import ugettext as _, ungettext
|
from django.utils.translation import gettext as _, ngettext
|
||||||
|
|
||||||
|
|
||||||
@functools.lru_cache(maxsize=None)
|
@functools.lru_cache(maxsize=None)
|
||||||
|
@ -99,7 +99,7 @@ class MinimumLengthValidator:
|
||||||
def validate(self, password, user=None):
|
def validate(self, password, user=None):
|
||||||
if len(password) < self.min_length:
|
if len(password) < self.min_length:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
ungettext(
|
ngettext(
|
||||||
"This password is too short. It must contain at least %(min_length)d character.",
|
"This password is too short. It must contain at least %(min_length)d character.",
|
||||||
"This password is too short. It must contain at least %(min_length)d characters.",
|
"This password is too short. It must contain at least %(min_length)d characters.",
|
||||||
self.min_length
|
self.min_length
|
||||||
|
@ -109,7 +109,7 @@ class MinimumLengthValidator:
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_help_text(self):
|
def get_help_text(self):
|
||||||
return ungettext(
|
return ngettext(
|
||||||
"Your password must contain at least %(min_length)d character.",
|
"Your password must contain at least %(min_length)d character.",
|
||||||
"Your password must contain at least %(min_length)d characters.",
|
"Your password must contain at least %(min_length)d characters.",
|
||||||
self.min_length
|
self.min_length
|
||||||
|
|
|
@ -2,7 +2,7 @@ import re
|
||||||
|
|
||||||
from django.core import validators
|
from django.core import validators
|
||||||
from django.utils.deconstruct import deconstructible
|
from django.utils.deconstruct import deconstructible
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
@deconstructible
|
@deconstructible
|
||||||
|
|
|
@ -21,7 +21,7 @@ from django.utils.decorators import method_decorator
|
||||||
from django.utils.deprecation import RemovedInDjango21Warning
|
from django.utils.deprecation import RemovedInDjango21Warning
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.http import is_safe_url, urlsafe_base64_decode
|
from django.utils.http import is_safe_url, urlsafe_base64_decode
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.views.decorators.cache import never_cache
|
from django.views.decorators.cache import never_cache
|
||||||
from django.views.decorators.csrf import csrf_protect
|
from django.views.decorators.csrf import csrf_protect
|
||||||
from django.views.decorators.debug import sensitive_post_parameters
|
from django.views.decorators.debug import sensitive_post_parameters
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.apps import AppConfig
|
||||||
from django.contrib.contenttypes.checks import check_generic_foreign_keys
|
from django.contrib.contenttypes.checks import check_generic_foreign_keys
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
from django.db.models.signals import post_migrate, pre_migrate
|
from django.db.models.signals import post_migrate, pre_migrate
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .management import (
|
from .management import (
|
||||||
create_contenttypes, inject_rename_contenttypes_operations,
|
create_contenttypes, inject_rename_contenttypes_operations,
|
||||||
|
|
|
@ -3,7 +3,7 @@ from collections import defaultdict
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class ContentTypeManager(models.Manager):
|
class ContentTypeManager(models.Manager):
|
||||||
|
|
|
@ -3,7 +3,7 @@ from django.apps import apps
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib.sites.requests import RequestSite
|
from django.contrib.sites.requests import RequestSite
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
|
|
||||||
def shortcut(request, content_type_id, object_id):
|
def shortcut(request, content_type_id, object_id):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.flatpages.forms import FlatpageForm
|
from django.contrib.flatpages.forms import FlatpageForm
|
||||||
from django.contrib.flatpages.models import FlatPage
|
from django.contrib.flatpages.models import FlatPage
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
@admin.register(FlatPage)
|
@admin.register(FlatPage)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class FlatPagesConfig(AppConfig):
|
class FlatPagesConfig(AppConfig):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.flatpages.models import FlatPage
|
from django.contrib.flatpages.models import FlatPage
|
||||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class FlatpageForm(forms.ModelForm):
|
class FlatpageForm(forms.ModelForm):
|
||||||
|
@ -26,14 +26,14 @@ class FlatpageForm(forms.ModelForm):
|
||||||
url = self.cleaned_data['url']
|
url = self.cleaned_data['url']
|
||||||
if not url.startswith('/'):
|
if not url.startswith('/'):
|
||||||
raise forms.ValidationError(
|
raise forms.ValidationError(
|
||||||
ugettext("URL is missing a leading slash."),
|
gettext("URL is missing a leading slash."),
|
||||||
code='missing_leading_slash',
|
code='missing_leading_slash',
|
||||||
)
|
)
|
||||||
if (settings.APPEND_SLASH and
|
if (settings.APPEND_SLASH and
|
||||||
'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE and
|
'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE and
|
||||||
not url.endswith('/')):
|
not url.endswith('/')):
|
||||||
raise forms.ValidationError(
|
raise forms.ValidationError(
|
||||||
ugettext("URL is missing a trailing slash."),
|
gettext("URL is missing a trailing slash."),
|
||||||
code='missing_trailing_slash',
|
code='missing_trailing_slash',
|
||||||
)
|
)
|
||||||
return url
|
return url
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.contrib.sites.models import Site
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.urls import get_script_prefix
|
from django.urls import get_script_prefix
|
||||||
from django.utils.encoding import iri_to_uri
|
from django.utils.encoding import iri_to_uri
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class FlatPage(models.Model):
|
class FlatPage(models.Model):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class GISConfig(AppConfig):
|
class GISConfig(AppConfig):
|
||||||
|
|
|
@ -10,7 +10,7 @@ from django.contrib.gis.geometry.backend import Geometry, GeometryException
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.db.models.expressions import Expression
|
from django.db.models.expressions import Expression
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
# Local cache of the spatial_ref_sys table, which holds SRID data for each
|
# 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
|
# spatial database alias. This cache exists so that the database isn't queried
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.gis.geos import GEOSException, GEOSGeometry
|
from django.contrib.gis.geos import GEOSException, GEOSGeometry
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .widgets import OpenLayersWidget
|
from .widgets import OpenLayersWidget
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
|
|
||||||
def feed(request, url, feed_dict=None):
|
def feed(request, url, feed_dict=None):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class HumanizeConfig(AppConfig):
|
class HumanizeConfig(AppConfig):
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.utils.encoding import force_text
|
||||||
from django.utils.formats import number_format
|
from django.utils.formats import number_format
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.timezone import is_aware, utc
|
from django.utils.timezone import is_aware, utc
|
||||||
from django.utils.translation import pgettext, ugettext as _, ungettext
|
from django.utils.translation import gettext as _, ngettext, pgettext
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
@ -56,48 +56,48 @@ def intcomma(value, use_l10n=True):
|
||||||
# A tuple of standard large number to their converters
|
# A tuple of standard large number to their converters
|
||||||
intword_converters = (
|
intword_converters = (
|
||||||
(6, lambda number: (
|
(6, lambda number: (
|
||||||
ungettext('%(value).1f million', '%(value).1f million', number),
|
ngettext('%(value).1f million', '%(value).1f million', number),
|
||||||
ungettext('%(value)s million', '%(value)s million', number),
|
ngettext('%(value)s million', '%(value)s million', number),
|
||||||
)),
|
)),
|
||||||
(9, lambda number: (
|
(9, lambda number: (
|
||||||
ungettext('%(value).1f billion', '%(value).1f billion', number),
|
ngettext('%(value).1f billion', '%(value).1f billion', number),
|
||||||
ungettext('%(value)s billion', '%(value)s billion', number),
|
ngettext('%(value)s billion', '%(value)s billion', number),
|
||||||
)),
|
)),
|
||||||
(12, lambda number: (
|
(12, lambda number: (
|
||||||
ungettext('%(value).1f trillion', '%(value).1f trillion', number),
|
ngettext('%(value).1f trillion', '%(value).1f trillion', number),
|
||||||
ungettext('%(value)s trillion', '%(value)s trillion', number),
|
ngettext('%(value)s trillion', '%(value)s trillion', number),
|
||||||
)),
|
)),
|
||||||
(15, lambda number: (
|
(15, lambda number: (
|
||||||
ungettext('%(value).1f quadrillion', '%(value).1f quadrillion', number),
|
ngettext('%(value).1f quadrillion', '%(value).1f quadrillion', number),
|
||||||
ungettext('%(value)s quadrillion', '%(value)s quadrillion', number),
|
ngettext('%(value)s quadrillion', '%(value)s quadrillion', number),
|
||||||
)),
|
)),
|
||||||
(18, lambda number: (
|
(18, lambda number: (
|
||||||
ungettext('%(value).1f quintillion', '%(value).1f quintillion', number),
|
ngettext('%(value).1f quintillion', '%(value).1f quintillion', number),
|
||||||
ungettext('%(value)s quintillion', '%(value)s quintillion', number),
|
ngettext('%(value)s quintillion', '%(value)s quintillion', number),
|
||||||
)),
|
)),
|
||||||
(21, lambda number: (
|
(21, lambda number: (
|
||||||
ungettext('%(value).1f sextillion', '%(value).1f sextillion', number),
|
ngettext('%(value).1f sextillion', '%(value).1f sextillion', number),
|
||||||
ungettext('%(value)s sextillion', '%(value)s sextillion', number),
|
ngettext('%(value)s sextillion', '%(value)s sextillion', number),
|
||||||
)),
|
)),
|
||||||
(24, lambda number: (
|
(24, lambda number: (
|
||||||
ungettext('%(value).1f septillion', '%(value).1f septillion', number),
|
ngettext('%(value).1f septillion', '%(value).1f septillion', number),
|
||||||
ungettext('%(value)s septillion', '%(value)s septillion', number),
|
ngettext('%(value)s septillion', '%(value)s septillion', number),
|
||||||
)),
|
)),
|
||||||
(27, lambda number: (
|
(27, lambda number: (
|
||||||
ungettext('%(value).1f octillion', '%(value).1f octillion', number),
|
ngettext('%(value).1f octillion', '%(value).1f octillion', number),
|
||||||
ungettext('%(value)s octillion', '%(value)s octillion', number),
|
ngettext('%(value)s octillion', '%(value)s octillion', number),
|
||||||
)),
|
)),
|
||||||
(30, lambda number: (
|
(30, lambda number: (
|
||||||
ungettext('%(value).1f nonillion', '%(value).1f nonillion', number),
|
ngettext('%(value).1f nonillion', '%(value).1f nonillion', number),
|
||||||
ungettext('%(value)s nonillion', '%(value)s nonillion', number),
|
ngettext('%(value)s nonillion', '%(value)s nonillion', number),
|
||||||
)),
|
)),
|
||||||
(33, lambda number: (
|
(33, lambda number: (
|
||||||
ungettext('%(value).1f decillion', '%(value).1f decillion', number),
|
ngettext('%(value).1f decillion', '%(value).1f decillion', number),
|
||||||
ungettext('%(value)s decillion', '%(value)s decillion', number),
|
ngettext('%(value)s decillion', '%(value)s decillion', number),
|
||||||
)),
|
)),
|
||||||
(100, lambda number: (
|
(100, lambda number: (
|
||||||
ungettext('%(value).1f googol', '%(value).1f googol', number),
|
ngettext('%(value).1f googol', '%(value).1f googol', number),
|
||||||
ungettext('%(value)s googol', '%(value)s googol', number),
|
ngettext('%(value)s googol', '%(value)s googol', number),
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -202,21 +202,21 @@ def naturaltime(value):
|
||||||
elif delta.seconds == 0:
|
elif delta.seconds == 0:
|
||||||
return _('now')
|
return _('now')
|
||||||
elif delta.seconds < 60:
|
elif delta.seconds < 60:
|
||||||
return ungettext(
|
return ngettext(
|
||||||
# Translators: please keep a non-breaking space (U+00A0)
|
# Translators: please keep a non-breaking space (U+00A0)
|
||||||
# between count and time unit.
|
# between count and time unit.
|
||||||
'a second ago', '%(count)s seconds ago', delta.seconds
|
'a second ago', '%(count)s seconds ago', delta.seconds
|
||||||
) % {'count': delta.seconds}
|
) % {'count': delta.seconds}
|
||||||
elif delta.seconds // 60 < 60:
|
elif delta.seconds // 60 < 60:
|
||||||
count = delta.seconds // 60
|
count = delta.seconds // 60
|
||||||
return ungettext(
|
return ngettext(
|
||||||
# Translators: please keep a non-breaking space (U+00A0)
|
# Translators: please keep a non-breaking space (U+00A0)
|
||||||
# between count and time unit.
|
# between count and time unit.
|
||||||
'a minute ago', '%(count)s minutes ago', count
|
'a minute ago', '%(count)s minutes ago', count
|
||||||
) % {'count': count}
|
) % {'count': count}
|
||||||
else:
|
else:
|
||||||
count = delta.seconds // 60 // 60
|
count = delta.seconds // 60 // 60
|
||||||
return ungettext(
|
return ngettext(
|
||||||
# Translators: please keep a non-breaking space (U+00A0)
|
# Translators: please keep a non-breaking space (U+00A0)
|
||||||
# between count and time unit.
|
# between count and time unit.
|
||||||
'an hour ago', '%(count)s hours ago', count
|
'an hour ago', '%(count)s hours ago', count
|
||||||
|
@ -230,21 +230,21 @@ def naturaltime(value):
|
||||||
elif delta.seconds == 0:
|
elif delta.seconds == 0:
|
||||||
return _('now')
|
return _('now')
|
||||||
elif delta.seconds < 60:
|
elif delta.seconds < 60:
|
||||||
return ungettext(
|
return ngettext(
|
||||||
# Translators: please keep a non-breaking space (U+00A0)
|
# Translators: please keep a non-breaking space (U+00A0)
|
||||||
# between count and time unit.
|
# between count and time unit.
|
||||||
'a second from now', '%(count)s seconds from now', delta.seconds
|
'a second from now', '%(count)s seconds from now', delta.seconds
|
||||||
) % {'count': delta.seconds}
|
) % {'count': delta.seconds}
|
||||||
elif delta.seconds // 60 < 60:
|
elif delta.seconds // 60 < 60:
|
||||||
count = delta.seconds // 60
|
count = delta.seconds // 60
|
||||||
return ungettext(
|
return ngettext(
|
||||||
# Translators: please keep a non-breaking space (U+00A0)
|
# Translators: please keep a non-breaking space (U+00A0)
|
||||||
# between count and time unit.
|
# between count and time unit.
|
||||||
'a minute from now', '%(count)s minutes from now', count
|
'a minute from now', '%(count)s minutes from now', count
|
||||||
) % {'count': count}
|
) % {'count': count}
|
||||||
else:
|
else:
|
||||||
count = delta.seconds // 60 // 60
|
count = delta.seconds // 60 // 60
|
||||||
return ungettext(
|
return ngettext(
|
||||||
# Translators: please keep a non-breaking space (U+00A0)
|
# Translators: please keep a non-breaking space (U+00A0)
|
||||||
# between count and time unit.
|
# between count and time unit.
|
||||||
'an hour from now', '%(count)s hours from now', count
|
'an hour from now', '%(count)s hours from now', count
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class MessagesConfig(AppConfig):
|
class MessagesConfig(AppConfig):
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.apps import AppConfig
|
||||||
from django.db import connections
|
from django.db import connections
|
||||||
from django.db.backends.signals import connection_created
|
from django.db.backends.signals import connection_created
|
||||||
from django.db.models import CharField, TextField
|
from django.db.models import CharField, TextField
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .lookups import SearchLookup, TrigramSimilar, Unaccent
|
from .lookups import SearchLookup, TrigramSimilar, Unaccent
|
||||||
from .signals import register_hstore_handler
|
from .signals import register_hstore_handler
|
||||||
|
|
|
@ -6,7 +6,7 @@ from django.contrib.postgres.validators import ArrayMaxLengthValidator
|
||||||
from django.core import checks, exceptions
|
from django.core import checks, exceptions
|
||||||
from django.db.models import Field, IntegerField, Transform
|
from django.db.models import Field, IntegerField, Transform
|
||||||
from django.db.models.lookups import Exact, In
|
from django.db.models.lookups import Exact, In
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from ..utils import prefix_validation_error
|
from ..utils import prefix_validation_error
|
||||||
from .utils import AttributeSetter
|
from .utils import AttributeSetter
|
||||||
|
|
|
@ -5,7 +5,7 @@ from django.contrib.postgres.fields.array import ArrayField
|
||||||
from django.core import exceptions
|
from django.core import exceptions
|
||||||
from django.db.models import Field, TextField, Transform
|
from django.db.models import Field, TextField, Transform
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = ['HStoreField']
|
__all__ = ['HStoreField']
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django.core import exceptions
|
||||||
from django.db.models import (
|
from django.db.models import (
|
||||||
Field, TextField, Transform, lookups as builtin_lookups,
|
Field, TextField, Transform, lookups as builtin_lookups,
|
||||||
)
|
)
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = ['JSONField']
|
__all__ = ['JSONField']
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django.contrib.postgres.validators import (
|
||||||
)
|
)
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from ..utils import prefix_validation_error
|
from ..utils import prefix_validation_error
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ import json
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = ['HStoreField']
|
__all__ = ['HStoreField']
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = ['JSONField']
|
__all__ = ['JSONField']
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ from psycopg2.extras import DateRange, DateTimeTZRange, NumericRange
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core import exceptions
|
from django.core import exceptions
|
||||||
from django.forms.widgets import MultiWidget
|
from django.forms.widgets import MultiWidget
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = ['IntegerRangeField', 'FloatRangeField', 'DateTimeRangeField', 'DateRangeField']
|
__all__ = ['IntegerRangeField', 'FloatRangeField', 'DateTimeRangeField', 'DateRangeField']
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ def prefix_validation_error(error, prefix, code, params):
|
||||||
# We can't simply concatenate messages since they might require
|
# We can't simply concatenate messages since they might require
|
||||||
# their associated parameters to be expressed correctly which
|
# their associated parameters to be expressed correctly which
|
||||||
# is not something `format_lazy` does. For example, proxied
|
# is not something `format_lazy` does. For example, proxied
|
||||||
# ungettext calls require a count parameter and are converted
|
# ngettext calls require a count parameter and are converted
|
||||||
# to an empty string if they are missing it.
|
# to an empty string if they are missing it.
|
||||||
message=format_lazy(
|
message=format_lazy(
|
||||||
'{}{}',
|
'{}{}',
|
||||||
|
|
|
@ -6,18 +6,18 @@ from django.core.validators import (
|
||||||
MinValueValidator,
|
MinValueValidator,
|
||||||
)
|
)
|
||||||
from django.utils.deconstruct import deconstructible
|
from django.utils.deconstruct import deconstructible
|
||||||
from django.utils.translation import ugettext_lazy as _, ungettext_lazy
|
from django.utils.translation import gettext_lazy as _, ngettext_lazy
|
||||||
|
|
||||||
|
|
||||||
class ArrayMaxLengthValidator(MaxLengthValidator):
|
class ArrayMaxLengthValidator(MaxLengthValidator):
|
||||||
message = ungettext_lazy(
|
message = ngettext_lazy(
|
||||||
'List contains %(show_value)d item, it should contain no more than %(limit_value)d.',
|
'List contains %(show_value)d item, it should contain no more than %(limit_value)d.',
|
||||||
'List contains %(show_value)d items, it should contain no more than %(limit_value)d.',
|
'List contains %(show_value)d items, it should contain no more than %(limit_value)d.',
|
||||||
'limit_value')
|
'limit_value')
|
||||||
|
|
||||||
|
|
||||||
class ArrayMinLengthValidator(MinLengthValidator):
|
class ArrayMinLengthValidator(MinLengthValidator):
|
||||||
message = ungettext_lazy(
|
message = ngettext_lazy(
|
||||||
'List contains %(show_value)d item, it should contain no fewer than %(limit_value)d.',
|
'List contains %(show_value)d item, it should contain no fewer than %(limit_value)d.',
|
||||||
'List contains %(show_value)d items, it should contain no fewer than %(limit_value)d.',
|
'List contains %(show_value)d items, it should contain no fewer than %(limit_value)d.',
|
||||||
'limit_value')
|
'limit_value')
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class RedirectsConfig(AppConfig):
|
class RedirectsConfig(AppConfig):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class Redirect(models.Model):
|
class Redirect(models.Model):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class SessionsConfig(AppConfig):
|
class SessionsConfig(AppConfig):
|
||||||
|
|
|
@ -3,7 +3,7 @@ This module allows importing AbstractBaseSession even
|
||||||
when django.contrib.sessions is not in INSTALLED_APPS.
|
when django.contrib.sessions is not in INSTALLED_APPS.
|
||||||
"""
|
"""
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class BaseSessionManager(models.Manager):
|
class BaseSessionManager(models.Manager):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class SiteMapsConfig(AppConfig):
|
class SiteMapsConfig(AppConfig):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.db.models.signals import post_migrate
|
from django.db.models.signals import post_migrate
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .management import create_default_site
|
from .management import create_default_site
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.core.exceptions import ImproperlyConfigured, ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import pre_delete, pre_save
|
from django.db.models.signals import pre_delete, pre_save
|
||||||
from django.http.request import split_domain_port
|
from django.http.request import split_domain_port
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
SITE_CACHE = {}
|
SITE_CACHE = {}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.contrib.staticfiles.checks import check_finders
|
from django.contrib.staticfiles.checks import check_finders
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class StaticFilesConfig(AppConfig):
|
class StaticFilesConfig(AppConfig):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class SyndicationConfig(AppConfig):
|
class SyndicationConfig(AppConfig):
|
||||||
|
|
|
@ -3,7 +3,7 @@ import warnings
|
||||||
from math import ceil
|
from math import ceil
|
||||||
|
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class UnorderedObjectListWarning(RuntimeWarning):
|
class UnorderedObjectListWarning(RuntimeWarning):
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.utils.deconstruct import deconstructible
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.functional import SimpleLazyObject
|
from django.utils.functional import SimpleLazyObject
|
||||||
from django.utils.ipv6 import is_valid_ipv6_address
|
from django.utils.ipv6 import is_valid_ipv6_address
|
||||||
from django.utils.translation import ugettext_lazy as _, ungettext_lazy
|
from django.utils.translation import gettext_lazy as _, ngettext_lazy
|
||||||
|
|
||||||
# These values, if given to validate(), will trigger the self.required check.
|
# These values, if given to validate(), will trigger the self.required check.
|
||||||
EMPTY_VALUES = (None, '', [], (), {})
|
EMPTY_VALUES = (None, '', [], (), {})
|
||||||
|
@ -359,7 +359,7 @@ class MinValueValidator(BaseValidator):
|
||||||
|
|
||||||
@deconstructible
|
@deconstructible
|
||||||
class MinLengthValidator(BaseValidator):
|
class MinLengthValidator(BaseValidator):
|
||||||
message = ungettext_lazy(
|
message = ngettext_lazy(
|
||||||
'Ensure this value has at least %(limit_value)d character (it has %(show_value)d).',
|
'Ensure this value has at least %(limit_value)d character (it has %(show_value)d).',
|
||||||
'Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).',
|
'Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).',
|
||||||
'limit_value')
|
'limit_value')
|
||||||
|
@ -374,7 +374,7 @@ class MinLengthValidator(BaseValidator):
|
||||||
|
|
||||||
@deconstructible
|
@deconstructible
|
||||||
class MaxLengthValidator(BaseValidator):
|
class MaxLengthValidator(BaseValidator):
|
||||||
message = ungettext_lazy(
|
message = ngettext_lazy(
|
||||||
'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).',
|
'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).',
|
||||||
'Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).',
|
'Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).',
|
||||||
'limit_value')
|
'limit_value')
|
||||||
|
@ -394,17 +394,17 @@ class DecimalValidator:
|
||||||
expected, otherwise raise ValidationError.
|
expected, otherwise raise ValidationError.
|
||||||
"""
|
"""
|
||||||
messages = {
|
messages = {
|
||||||
'max_digits': ungettext_lazy(
|
'max_digits': ngettext_lazy(
|
||||||
'Ensure that there are no more than %(max)s digit in total.',
|
'Ensure that there are no more than %(max)s digit in total.',
|
||||||
'Ensure that there are no more than %(max)s digits in total.',
|
'Ensure that there are no more than %(max)s digits in total.',
|
||||||
'max'
|
'max'
|
||||||
),
|
),
|
||||||
'max_decimal_places': ungettext_lazy(
|
'max_decimal_places': ngettext_lazy(
|
||||||
'Ensure that there are no more than %(max)s decimal place.',
|
'Ensure that there are no more than %(max)s decimal place.',
|
||||||
'Ensure that there are no more than %(max)s decimal places.',
|
'Ensure that there are no more than %(max)s decimal places.',
|
||||||
'max'
|
'max'
|
||||||
),
|
),
|
||||||
'max_whole_digits': ungettext_lazy(
|
'max_whole_digits': ngettext_lazy(
|
||||||
'Ensure that there are no more than %(max)s digit before the decimal point.',
|
'Ensure that there are no more than %(max)s digit before the decimal point.',
|
||||||
'Ensure that there are no more than %(max)s digits before the decimal point.',
|
'Ensure that there are no more than %(max)s digits before the decimal point.',
|
||||||
'max'
|
'max'
|
||||||
|
|
|
@ -29,7 +29,7 @@ from django.db.models.utils import make_model_tuple
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.functional import curry
|
from django.utils.functional import curry
|
||||||
from django.utils.text import capfirst, get_text_list
|
from django.utils.text import capfirst, get_text_list
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.utils.version import get_version
|
from django.utils.version import get_version
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ from django.utils.functional import Promise, cached_property, curry
|
||||||
from django.utils.ipv6 import clean_ipv6_address
|
from django.utils.ipv6 import clean_ipv6_address
|
||||||
from django.utils.itercompat import is_iterable
|
from django.utils.itercompat import is_iterable
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'AutoField', 'BLANK_CHOICE_DASH', 'BigAutoField', 'BigIntegerField',
|
'AutoField', 'BLANK_CHOICE_DASH', 'BigAutoField', 'BigIntegerField',
|
||||||
|
|
|
@ -10,7 +10,7 @@ from django.core.validators import validate_image_file_extension
|
||||||
from django.db.models import signals
|
from django.db.models import signals
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class FieldFile(File):
|
class FieldFile(File):
|
||||||
|
|
|
@ -14,7 +14,7 @@ from django.db.models.query_utils import PathInfo
|
||||||
from django.db.models.utils import make_model_tuple
|
from django.db.models.utils import make_model_tuple
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.functional import cached_property, curry
|
from django.utils.functional import cached_property, curry
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from . import Field
|
from . import Field
|
||||||
from .related_descriptors import (
|
from .related_descriptors import (
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.utils.functional import cached_property
|
||||||
from django.utils.html import conditional_escape, format_html, html_safe
|
from django.utils.html import conditional_escape, format_html, html_safe
|
||||||
from django.utils.inspect import func_supports_parameter
|
from django.utils.inspect import func_supports_parameter
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
__all__ = ('BoundField',)
|
__all__ = ('BoundField',)
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ from django.utils.dateparse import parse_duration
|
||||||
from django.utils.duration import duration_string
|
from django.utils.duration import duration_string
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.ipv6 import clean_ipv6_address
|
from django.utils.ipv6 import clean_ipv6_address
|
||||||
from django.utils.translation import ugettext_lazy as _, ungettext_lazy
|
from django.utils.translation import gettext_lazy as _, ngettext_lazy
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'Field', 'CharField', 'IntegerField',
|
'Field', 'CharField', 'IntegerField',
|
||||||
|
@ -534,7 +534,7 @@ class FileField(Field):
|
||||||
'invalid': _("No file was submitted. Check the encoding type on the form."),
|
'invalid': _("No file was submitted. Check the encoding type on the form."),
|
||||||
'missing': _("No file was submitted."),
|
'missing': _("No file was submitted."),
|
||||||
'empty': _("The submitted file is empty."),
|
'empty': _("The submitted file is empty."),
|
||||||
'max_length': ungettext_lazy(
|
'max_length': ngettext_lazy(
|
||||||
'Ensure this filename has at most %(max)d character (it has %(length)d).',
|
'Ensure this filename has at most %(max)d character (it has %(length)d).',
|
||||||
'Ensure this filename has at most %(max)d characters (it has %(length)d).',
|
'Ensure this filename has at most %(max)d characters (it has %(length)d).',
|
||||||
'max'),
|
'max'),
|
||||||
|
|
|
@ -16,7 +16,7 @@ from django.utils.encoding import force_text
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.html import conditional_escape, html_safe
|
from django.utils.html import conditional_escape, html_safe
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from .renderers import get_default_renderer
|
from .renderers import get_default_renderer
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ from django.forms.widgets import HiddenInput
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.html import html_safe
|
from django.utils.html import html_safe
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext as _, ungettext
|
from django.utils.translation import gettext as _, ngettext
|
||||||
|
|
||||||
__all__ = ('BaseFormSet', 'formset_factory', 'all_valid')
|
__all__ = ('BaseFormSet', 'formset_factory', 'all_valid')
|
||||||
|
|
||||||
|
@ -341,14 +341,14 @@ class BaseFormSet:
|
||||||
if (self.validate_max and
|
if (self.validate_max and
|
||||||
self.total_form_count() - len(self.deleted_forms) > self.max_num) or \
|
self.total_form_count() - len(self.deleted_forms) > self.max_num) or \
|
||||||
self.management_form.cleaned_data[TOTAL_FORM_COUNT] > self.absolute_max:
|
self.management_form.cleaned_data[TOTAL_FORM_COUNT] > self.absolute_max:
|
||||||
raise ValidationError(ungettext(
|
raise ValidationError(ngettext(
|
||||||
"Please submit %d or fewer forms.",
|
"Please submit %d or fewer forms.",
|
||||||
"Please submit %d or fewer forms.", self.max_num) % self.max_num,
|
"Please submit %d or fewer forms.", self.max_num) % self.max_num,
|
||||||
code='too_many_forms',
|
code='too_many_forms',
|
||||||
)
|
)
|
||||||
if (self.validate_min and
|
if (self.validate_min and
|
||||||
self.total_form_count() - len(self.deleted_forms) - empty_forms_count < self.min_num):
|
self.total_form_count() - len(self.deleted_forms) - empty_forms_count < self.min_num):
|
||||||
raise ValidationError(ungettext(
|
raise ValidationError(ngettext(
|
||||||
"Please submit %d or more forms.",
|
"Please submit %d or more forms.",
|
||||||
"Please submit %d or more forms.", self.min_num) % self.min_num,
|
"Please submit %d or more forms.", self.min_num) % self.min_num,
|
||||||
code='too_few_forms')
|
code='too_few_forms')
|
||||||
|
|
|
@ -18,7 +18,7 @@ from django.forms.widgets import (
|
||||||
)
|
)
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.text import capfirst, get_text_list
|
from django.utils.text import capfirst, get_text_list
|
||||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',
|
'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',
|
||||||
|
@ -719,16 +719,16 @@ class BaseModelFormSet(BaseFormSet):
|
||||||
|
|
||||||
def get_unique_error_message(self, unique_check):
|
def get_unique_error_message(self, unique_check):
|
||||||
if len(unique_check) == 1:
|
if len(unique_check) == 1:
|
||||||
return ugettext("Please correct the duplicate data for %(field)s.") % {
|
return gettext("Please correct the duplicate data for %(field)s.") % {
|
||||||
"field": unique_check[0],
|
"field": unique_check[0],
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
return ugettext("Please correct the duplicate data for %(field)s, which must be unique.") % {
|
return gettext("Please correct the duplicate data for %(field)s, which must be unique.") % {
|
||||||
"field": get_text_list(unique_check, _("and")),
|
"field": get_text_list(unique_check, _("and")),
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_date_error_message(self, date_check):
|
def get_date_error_message(self, date_check):
|
||||||
return ugettext(
|
return gettext(
|
||||||
"Please correct the duplicate data for %(field_name)s "
|
"Please correct the duplicate data for %(field_name)s "
|
||||||
"which must be unique for the %(lookup)s in %(date_field)s."
|
"which must be unique for the %(lookup)s in %(date_field)s."
|
||||||
) % {
|
) % {
|
||||||
|
@ -738,7 +738,7 @@ class BaseModelFormSet(BaseFormSet):
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_form_error(self):
|
def get_form_error(self):
|
||||||
return ugettext("Please correct the duplicate values below.")
|
return gettext("Please correct the duplicate values below.")
|
||||||
|
|
||||||
def save_existing_objects(self, commit=True):
|
def save_existing_objects(self, commit=True):
|
||||||
self.changed_objects = []
|
self.changed_objects = []
|
||||||
|
|
|
@ -6,7 +6,7 @@ from django.core.exceptions import ValidationError # backwards compatibility
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.html import escape, format_html, format_html_join, html_safe
|
from django.utils.html import escape, format_html, format_html_join, html_safe
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
def pretty_name(name):
|
def pretty_name(name):
|
||||||
|
|
|
@ -17,7 +17,7 @@ from django.utils.encoding import force_text
|
||||||
from django.utils.formats import get_format
|
from django.utils.formats import get_format
|
||||||
from django.utils.html import format_html, html_safe
|
from django.utils.html import format_html, html_safe
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext_lazy
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .renderers import get_default_renderer
|
from .renderers import get_default_renderer
|
||||||
|
|
||||||
|
@ -358,9 +358,9 @@ FILE_INPUT_CONTRADICTION = object()
|
||||||
|
|
||||||
|
|
||||||
class ClearableFileInput(FileInput):
|
class ClearableFileInput(FileInput):
|
||||||
clear_checkbox_label = ugettext_lazy('Clear')
|
clear_checkbox_label = _('Clear')
|
||||||
initial_text = ugettext_lazy('Currently')
|
initial_text = _('Currently')
|
||||||
input_text = ugettext_lazy('Change')
|
input_text = _('Change')
|
||||||
template_name = 'django/forms/widgets/clearable_file_input.html'
|
template_name = 'django/forms/widgets/clearable_file_input.html'
|
||||||
|
|
||||||
def clear_checkbox_name(self, name):
|
def clear_checkbox_name(self, name):
|
||||||
|
@ -690,9 +690,9 @@ class NullBooleanSelect(Select):
|
||||||
"""
|
"""
|
||||||
def __init__(self, attrs=None):
|
def __init__(self, attrs=None):
|
||||||
choices = (
|
choices = (
|
||||||
('1', ugettext_lazy('Unknown')),
|
('1', _('Unknown')),
|
||||||
('2', ugettext_lazy('Yes')),
|
('2', _('Yes')),
|
||||||
('3', ugettext_lazy('No')),
|
('3', _('No')),
|
||||||
)
|
)
|
||||||
super().__init__(attrs, choices)
|
super().__init__(attrs, choices)
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ from django.utils.text import (
|
||||||
get_text_list, smart_split, unescape_string_literal,
|
get_text_list, smart_split, unescape_string_literal,
|
||||||
)
|
)
|
||||||
from django.utils.timezone import template_localtime
|
from django.utils.timezone import template_localtime
|
||||||
from django.utils.translation import pgettext_lazy, ugettext_lazy
|
from django.utils.translation import gettext_lazy, pgettext_lazy
|
||||||
|
|
||||||
from .exceptions import TemplateSyntaxError
|
from .exceptions import TemplateSyntaxError
|
||||||
|
|
||||||
|
@ -824,7 +824,7 @@ class Variable:
|
||||||
if self.message_context:
|
if self.message_context:
|
||||||
return pgettext_lazy(self.message_context, msgid)
|
return pgettext_lazy(self.message_context, msgid)
|
||||||
else:
|
else:
|
||||||
return ugettext_lazy(msgid)
|
return gettext_lazy(msgid)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
|
|
@ -19,7 +19,7 @@ from django.utils.text import (
|
||||||
Truncator, normalize_newlines, phone2numeric, slugify as _slugify, wrap,
|
Truncator, normalize_newlines, phone2numeric, slugify as _slugify, wrap,
|
||||||
)
|
)
|
||||||
from django.utils.timesince import timesince, timeuntil
|
from django.utils.timesince import timesince, timeuntil
|
||||||
from django.utils.translation import ugettext, ungettext
|
from django.utils.translation import gettext, ngettext
|
||||||
|
|
||||||
from .base import Variable, VariableDoesNotExist
|
from .base import Variable, VariableDoesNotExist
|
||||||
from .library import Library
|
from .library import Library
|
||||||
|
@ -817,7 +817,7 @@ def yesno(value, arg=None):
|
||||||
========== ====================== ==================================
|
========== ====================== ==================================
|
||||||
"""
|
"""
|
||||||
if arg is None:
|
if arg is None:
|
||||||
arg = ugettext('yes,no,maybe')
|
arg = gettext('yes,no,maybe')
|
||||||
bits = arg.split(',')
|
bits = arg.split(',')
|
||||||
if len(bits) < 2:
|
if len(bits) < 2:
|
||||||
return value # Invalid arg.
|
return value # Invalid arg.
|
||||||
|
@ -846,7 +846,7 @@ def filesizeformat(bytes_):
|
||||||
try:
|
try:
|
||||||
bytes_ = float(bytes_)
|
bytes_ = float(bytes_)
|
||||||
except (TypeError, ValueError, UnicodeDecodeError):
|
except (TypeError, ValueError, UnicodeDecodeError):
|
||||||
value = ungettext("%(size)d byte", "%(size)d bytes", 0) % {'size': 0}
|
value = ngettext("%(size)d byte", "%(size)d bytes", 0) % {'size': 0}
|
||||||
return avoid_wrapping(value)
|
return avoid_wrapping(value)
|
||||||
|
|
||||||
def filesize_number_format(value):
|
def filesize_number_format(value):
|
||||||
|
@ -863,17 +863,17 @@ def filesizeformat(bytes_):
|
||||||
bytes_ = -bytes_ # Allow formatting of negative numbers.
|
bytes_ = -bytes_ # Allow formatting of negative numbers.
|
||||||
|
|
||||||
if bytes_ < KB:
|
if bytes_ < KB:
|
||||||
value = ungettext("%(size)d byte", "%(size)d bytes", bytes_) % {'size': bytes_}
|
value = ngettext("%(size)d byte", "%(size)d bytes", bytes_) % {'size': bytes_}
|
||||||
elif bytes_ < MB:
|
elif bytes_ < MB:
|
||||||
value = ugettext("%s KB") % filesize_number_format(bytes_ / KB)
|
value = gettext("%s KB") % filesize_number_format(bytes_ / KB)
|
||||||
elif bytes_ < GB:
|
elif bytes_ < GB:
|
||||||
value = ugettext("%s MB") % filesize_number_format(bytes_ / MB)
|
value = gettext("%s MB") % filesize_number_format(bytes_ / MB)
|
||||||
elif bytes_ < TB:
|
elif bytes_ < TB:
|
||||||
value = ugettext("%s GB") % filesize_number_format(bytes_ / GB)
|
value = gettext("%s GB") % filesize_number_format(bytes_ / GB)
|
||||||
elif bytes_ < PB:
|
elif bytes_ < PB:
|
||||||
value = ugettext("%s TB") % filesize_number_format(bytes_ / TB)
|
value = gettext("%s TB") % filesize_number_format(bytes_ / TB)
|
||||||
else:
|
else:
|
||||||
value = ugettext("%s PB") % filesize_number_format(bytes_ / PB)
|
value = gettext("%s PB") % filesize_number_format(bytes_ / PB)
|
||||||
|
|
||||||
if negative:
|
if negative:
|
||||||
value = "-%s" % value
|
value = "-%s" % value
|
||||||
|
|
|
@ -13,7 +13,7 @@ class GetAvailableLanguagesNode(Node):
|
||||||
self.variable = variable
|
self.variable = variable
|
||||||
|
|
||||||
def render(self, context):
|
def render(self, context):
|
||||||
context[self.variable] = [(k, translation.ugettext(v)) for k, v in settings.LANGUAGES]
|
context[self.variable] = [(k, translation.gettext(v)) for k, v in settings.LANGUAGES]
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,13 +142,13 @@ class BlockTranslateNode(Node):
|
||||||
result = translation.npgettext(message_context, singular,
|
result = translation.npgettext(message_context, singular,
|
||||||
plural, count)
|
plural, count)
|
||||||
else:
|
else:
|
||||||
result = translation.ungettext(singular, plural, count)
|
result = translation.ngettext(singular, plural, count)
|
||||||
vars.extend(plural_vars)
|
vars.extend(plural_vars)
|
||||||
else:
|
else:
|
||||||
if message_context:
|
if message_context:
|
||||||
result = translation.pgettext(message_context, singular)
|
result = translation.pgettext(message_context, singular)
|
||||||
else:
|
else:
|
||||||
result = translation.ugettext(singular)
|
result = translation.gettext(singular)
|
||||||
default_value = context.template.engine.string_if_invalid
|
default_value = context.template.engine.string_if_invalid
|
||||||
|
|
||||||
def render_value(key):
|
def render_value(key):
|
||||||
|
@ -267,7 +267,7 @@ def language_name(lang_code):
|
||||||
@register.filter
|
@register.filter
|
||||||
def language_name_translated(lang_code):
|
def language_name_translated(lang_code):
|
||||||
english_name = translation.get_language_info(lang_code)['name']
|
english_name = translation.get_language_info(lang_code)['name']
|
||||||
return translation.ugettext(english_name)
|
return translation.gettext(english_name)
|
||||||
|
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
|
|
|
@ -114,7 +114,7 @@ class LocaleRegexProvider:
|
||||||
"""
|
"""
|
||||||
def __init__(self, regex):
|
def __init__(self, regex):
|
||||||
# regex is either a string representing a regular expression, or a
|
# regex is either a string representing a regular expression, or a
|
||||||
# translatable string (using ugettext_lazy) representing a regular
|
# translatable string (using gettext_lazy) representing a regular
|
||||||
# expression.
|
# expression.
|
||||||
self._regex = regex
|
self._regex = regex
|
||||||
self._regex_dict = {}
|
self._regex_dict = {}
|
||||||
|
|
|
@ -20,7 +20,7 @@ from django.utils.dates import (
|
||||||
)
|
)
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.timezone import get_default_timezone, is_aware, is_naive
|
from django.utils.timezone import get_default_timezone, is_aware, is_naive
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
re_formatchars = re.compile(r'(?<!\\)([aAbBcdDeEfFgGhHiIjlLmMnNoOPrsStTUuwWyYzZ])')
|
re_formatchars = re.compile(r'(?<!\\)([aAbBcdDeEfFgGhHiIjlLmMnNoOPrsStTUuwWyYzZ])')
|
||||||
re_escaped = re.compile(r'\\(.)')
|
re_escaped = re.compile(r'\\(.)')
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"Commonly-used date structures"
|
"Commonly-used date structures"
|
||||||
|
|
||||||
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _, pgettext_lazy
|
||||||
|
|
||||||
WEEKDAYS = {
|
WEEKDAYS = {
|
||||||
0: _('Monday'), 1: _('Tuesday'), 2: _('Wednesday'), 3: _('Thursday'), 4: _('Friday'),
|
0: _('Monday'), 1: _('Tuesday'), 2: _('Wednesday'), 3: _('Thursday'), 4: _('Friday'),
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import ipaddress
|
import ipaddress
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
def clean_ipv6_address(ip_str, unpack_ipv4=False,
|
def clean_ipv6_address(ip_str, unpack_ipv4=False,
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.utils.functional import (
|
||||||
SimpleLazyObject, keep_lazy, keep_lazy_text, lazy,
|
SimpleLazyObject, keep_lazy, keep_lazy_text, lazy,
|
||||||
)
|
)
|
||||||
from django.utils.safestring import SafeText, mark_safe
|
from django.utils.safestring import SafeText, mark_safe
|
||||||
from django.utils.translation import pgettext, ugettext as _, ugettext_lazy
|
from django.utils.translation import gettext as _, gettext_lazy, pgettext
|
||||||
|
|
||||||
|
|
||||||
@keep_lazy_text
|
@keep_lazy_text
|
||||||
|
@ -240,7 +240,7 @@ def get_valid_filename(s):
|
||||||
|
|
||||||
|
|
||||||
@keep_lazy_text
|
@keep_lazy_text
|
||||||
def get_text_list(list_, last_word=ugettext_lazy('or')):
|
def get_text_list(list_, last_word=gettext_lazy('or')):
|
||||||
"""
|
"""
|
||||||
>>> get_text_list(['a', 'b', 'c', 'd'])
|
>>> get_text_list(['a', 'b', 'c', 'd'])
|
||||||
'a, b, c or d'
|
'a, b, c or d'
|
||||||
|
|
|
@ -3,15 +3,15 @@ import datetime
|
||||||
|
|
||||||
from django.utils.html import avoid_wrapping
|
from django.utils.html import avoid_wrapping
|
||||||
from django.utils.timezone import is_aware, utc
|
from django.utils.timezone import is_aware, utc
|
||||||
from django.utils.translation import ugettext, ungettext_lazy
|
from django.utils.translation import gettext, ngettext_lazy
|
||||||
|
|
||||||
TIMESINCE_CHUNKS = (
|
TIMESINCE_CHUNKS = (
|
||||||
(60 * 60 * 24 * 365, ungettext_lazy('%d year', '%d years')),
|
(60 * 60 * 24 * 365, ngettext_lazy('%d year', '%d years')),
|
||||||
(60 * 60 * 24 * 30, ungettext_lazy('%d month', '%d months')),
|
(60 * 60 * 24 * 30, ngettext_lazy('%d month', '%d months')),
|
||||||
(60 * 60 * 24 * 7, ungettext_lazy('%d week', '%d weeks')),
|
(60 * 60 * 24 * 7, ngettext_lazy('%d week', '%d weeks')),
|
||||||
(60 * 60 * 24, ungettext_lazy('%d day', '%d days')),
|
(60 * 60 * 24, ngettext_lazy('%d day', '%d days')),
|
||||||
(60 * 60, ungettext_lazy('%d hour', '%d hours')),
|
(60 * 60, ngettext_lazy('%d hour', '%d hours')),
|
||||||
(60, ungettext_lazy('%d minute', '%d minutes'))
|
(60, ngettext_lazy('%d minute', '%d minutes'))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ def timesince(d, now=None, reversed=False):
|
||||||
since = delta.days * 24 * 60 * 60 + delta.seconds
|
since = delta.days * 24 * 60 * 60 + delta.seconds
|
||||||
if since <= 0:
|
if since <= 0:
|
||||||
# d is in the future compared to now, stop processing.
|
# d is in the future compared to now, stop processing.
|
||||||
return avoid_wrapping(ugettext('0 minutes'))
|
return avoid_wrapping(gettext('0 minutes'))
|
||||||
for i, (seconds, name) in enumerate(TIMESINCE_CHUNKS):
|
for i, (seconds, name) in enumerate(TIMESINCE_CHUNKS):
|
||||||
count = since // seconds
|
count = since // seconds
|
||||||
if count != 0:
|
if count != 0:
|
||||||
|
@ -66,7 +66,7 @@ def timesince(d, now=None, reversed=False):
|
||||||
seconds2, name2 = TIMESINCE_CHUNKS[i + 1]
|
seconds2, name2 = TIMESINCE_CHUNKS[i + 1]
|
||||||
count2 = (since - (seconds * count)) // seconds2
|
count2 = (since - (seconds * count)) // seconds2
|
||||||
if count2 != 0:
|
if count2 != 0:
|
||||||
result += ugettext(', ') + avoid_wrapping(name2 % count2)
|
result += gettext(', ') + avoid_wrapping(name2 % count2)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -250,7 +250,7 @@ def get_language_info(lang_code):
|
||||||
raise KeyError("Unknown language code %s and %s." % (lang_code, generic_lang_code))
|
raise KeyError("Unknown language code %s and %s." % (lang_code, generic_lang_code))
|
||||||
|
|
||||||
if info:
|
if info:
|
||||||
info['name_translated'] = ugettext_lazy(info['name'])
|
info['name_translated'] = gettext_lazy(info['name'])
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.http import HttpResponseForbidden
|
from django.http import HttpResponseForbidden
|
||||||
from django.template import Context, Engine, TemplateDoesNotExist, loader
|
from django.template import Context, Engine, TemplateDoesNotExist, loader
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.utils.version import get_docs_version
|
from django.utils.version import get_docs_version
|
||||||
|
|
||||||
# We include the template inline since we need to be able to reliably display
|
# We include the template inline since we need to be able to reliably display
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.utils import timezone
|
||||||
from django.utils.datastructures import MultiValueDict
|
from django.utils.datastructures import MultiValueDict
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.module_loading import import_string
|
from django.utils.module_loading import import_string
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
# Minimal Django templates engine to render the error templates
|
# Minimal Django templates engine to render the error templates
|
||||||
# regardless of the project's TEMPLATES setting.
|
# regardless of the project's TEMPLATES setting.
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django.http import Http404
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.views.generic.base import View
|
from django.views.generic.base import View
|
||||||
from django.views.generic.detail import (
|
from django.views.generic.detail import (
|
||||||
BaseDetailView, SingleObjectTemplateResponseMixin,
|
BaseDetailView, SingleObjectTemplateResponseMixin,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.core.paginator import InvalidPage, Paginator
|
from django.core.paginator import InvalidPage, Paginator
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ from django.http import (
|
||||||
)
|
)
|
||||||
from django.template import Context, Engine, TemplateDoesNotExist, loader
|
from django.template import Context, Engine, TemplateDoesNotExist, loader
|
||||||
from django.utils.http import http_date, parse_http_date
|
from django.utils.http import http_date, parse_http_date
|
||||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
from django.utils.translation import gettext as _, gettext_lazy
|
||||||
|
|
||||||
|
|
||||||
def serve(request, path, document_root=None, show_indexes=False):
|
def serve(request, path, document_root=None, show_indexes=False):
|
||||||
|
@ -95,7 +95,7 @@ DEFAULT_DIRECTORY_INDEX_TEMPLATE = """
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
"""
|
"""
|
||||||
template_translatable = ugettext_lazy("Index of %(directory)s")
|
template_translatable = gettext_lazy("Index of %(directory)s")
|
||||||
|
|
||||||
|
|
||||||
def directory_index(path, fullpath):
|
def directory_index(path, fullpath):
|
||||||
|
|
|
@ -498,7 +498,7 @@ instances::
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
def parse_hand(hand_string):
|
def parse_hand(hand_string):
|
||||||
"""Takes a string of cards and splits into a full hand."""
|
"""Takes a string of cards and splits into a full hand."""
|
||||||
|
|
|
@ -457,10 +457,10 @@ Here are some common problems that you may encounter during initialization:
|
||||||
importing an application configuration or a models module triggers code that
|
importing an application configuration or a models module triggers code that
|
||||||
depends on the app registry.
|
depends on the app registry.
|
||||||
|
|
||||||
For example, :func:`~django.utils.translation.ugettext()` uses the app
|
For example, :func:`~django.utils.translation.gettext()` uses the app
|
||||||
registry to look up translation catalogs in applications. To translate at
|
registry to look up translation catalogs in applications. To translate at
|
||||||
import time, you need :func:`~django.utils.translation.ugettext_lazy()`
|
import time, you need :func:`~django.utils.translation.gettext_lazy()`
|
||||||
instead. (Using :func:`~django.utils.translation.ugettext()` would be a bug,
|
instead. (Using :func:`~django.utils.translation.gettext()` would be a bug,
|
||||||
because the translation would happen at import time, rather than at each
|
because the translation would happen at import time, rather than at each
|
||||||
request depending on the active language.)
|
request depending on the active language.)
|
||||||
|
|
||||||
|
|
|
@ -860,7 +860,7 @@ subclass::
|
||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class DecadeBornListFilter(admin.SimpleListFilter):
|
class DecadeBornListFilter(admin.SimpleListFilter):
|
||||||
# Human-readable title which will be displayed in the
|
# Human-readable title which will be displayed in the
|
||||||
|
|
|
@ -186,7 +186,7 @@ registering a custom ``ModelAdmin`` for ``FlatPage``::
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.flatpages.admin import FlatPageAdmin
|
from django.contrib.flatpages.admin import FlatPageAdmin
|
||||||
from django.contrib.flatpages.models import FlatPage
|
from django.contrib.flatpages.models import FlatPage
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
# Define a new FlatPageAdmin
|
# Define a new FlatPageAdmin
|
||||||
class FlatPageAdmin(FlatPageAdmin):
|
class FlatPageAdmin(FlatPageAdmin):
|
||||||
|
|
|
@ -261,7 +261,7 @@ access to more than a single field::
|
||||||
import datetime
|
import datetime
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class Article(models.Model):
|
class Article(models.Model):
|
||||||
...
|
...
|
||||||
|
|
|
@ -1748,11 +1748,11 @@ to restrict language selection to a subset of the Django-provided languages.
|
||||||
|
|
||||||
If you define a custom :setting:`LANGUAGES` setting, you can mark the
|
If you define a custom :setting:`LANGUAGES` setting, you can mark the
|
||||||
language names as translation strings using the
|
language names as translation strings using the
|
||||||
:func:`~django.utils.translation.ugettext_lazy` function.
|
:func:`~django.utils.translation.gettext_lazy` function.
|
||||||
|
|
||||||
Here's a sample settings file::
|
Here's a sample settings file::
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
LANGUAGES = [
|
LANGUAGES = [
|
||||||
('de', _('German')),
|
('de', _('German')),
|
||||||
|
|
|
@ -34,7 +34,7 @@ Helper function to return a URL pattern for serving files in debug mode::
|
||||||
]
|
]
|
||||||
|
|
||||||
The ``regex`` parameter should be a string or
|
The ``regex`` parameter should be a string or
|
||||||
:func:`~django.utils.translation.ugettext_lazy()` (see
|
:func:`~django.utils.translation.gettext_lazy()` (see
|
||||||
:ref:`translating-urlpatterns`) that contains a regular expression compatible
|
:ref:`translating-urlpatterns`) that contains a regular expression compatible
|
||||||
with Python's :py:mod:`re` module. Strings typically use raw string syntax
|
with Python's :py:mod:`re` module. Strings typically use raw string syntax
|
||||||
(``r''``) so that they can contain sequences like ``\d`` without the need to
|
(``r''``) so that they can contain sequences like ``\d`` without the need to
|
||||||
|
|
|
@ -16,7 +16,7 @@ different types of fields.
|
||||||
For example, here's a validator that only allows even numbers::
|
For example, here's a validator that only allows even numbers::
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
def validate_even(value):
|
def validate_even(value):
|
||||||
if value % 2 != 0:
|
if value % 2 != 0:
|
||||||
|
|
|
@ -646,7 +646,7 @@ have a default value.
|
||||||
Here's a basic example of a validator, with one optional setting::
|
Here's a basic example of a validator, with one optional setting::
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
class MinimumLengthValidator(object):
|
class MinimumLengthValidator(object):
|
||||||
def __init__(self, min_length=8):
|
def __init__(self, min_length=8):
|
||||||
|
|
|
@ -521,7 +521,7 @@ attributes of the inner ``Meta`` class if you want to further customize a field.
|
||||||
For example if you wanted to customize the wording of all user facing strings for
|
For example if you wanted to customize the wording of all user facing strings for
|
||||||
the ``name`` field::
|
the ``name`` field::
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class AuthorForm(ModelForm):
|
class AuthorForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -49,7 +49,7 @@ Standard translation
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
Specify a translation string by using the function
|
Specify a translation string by using the function
|
||||||
:func:`~django.utils.translation.ugettext`. It's convention to import this
|
:func:`~django.utils.translation.gettext`. It's convention to import this
|
||||||
as a shorter alias, ``_``, to save typing.
|
as a shorter alias, ``_``, to save typing.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
@ -63,7 +63,7 @@ as a shorter alias, ``_``, to save typing.
|
||||||
global namespace, as an alias for ``gettext()``. In Django, we have chosen
|
global namespace, as an alias for ``gettext()``. In Django, we have chosen
|
||||||
not to follow this practice, for a couple of reasons:
|
not to follow this practice, for a couple of reasons:
|
||||||
|
|
||||||
1. Sometimes, you should use :func:`~django.utils.translation.ugettext_lazy`
|
1. Sometimes, you should use :func:`~django.utils.translation.gettext_lazy`
|
||||||
as the default translation method for a particular file. Without ``_()``
|
as the default translation method for a particular file. Without ``_()``
|
||||||
in the global namespace, the developer has to think about which is the
|
in the global namespace, the developer has to think about which is the
|
||||||
most appropriate translation function.
|
most appropriate translation function.
|
||||||
|
@ -71,7 +71,7 @@ as a shorter alias, ``_``, to save typing.
|
||||||
2. The underscore character (``_``) is used to represent "the previous
|
2. The underscore character (``_``) is used to represent "the previous
|
||||||
result" in Python's interactive shell and doctest tests. Installing a
|
result" in Python's interactive shell and doctest tests. Installing a
|
||||||
global ``_()`` function causes interference. Explicitly importing
|
global ``_()`` function causes interference. Explicitly importing
|
||||||
``ugettext()`` as ``_()`` avoids this problem.
|
``gettext()`` as ``_()`` avoids this problem.
|
||||||
|
|
||||||
.. admonition:: What functions may be aliased as ``_``?
|
.. admonition:: What functions may be aliased as ``_``?
|
||||||
|
|
||||||
|
@ -80,13 +80,11 @@ as a shorter alias, ``_``, to save typing.
|
||||||
|
|
||||||
* :func:`~django.utils.translation.gettext`
|
* :func:`~django.utils.translation.gettext`
|
||||||
* :func:`~django.utils.translation.gettext_lazy`
|
* :func:`~django.utils.translation.gettext_lazy`
|
||||||
* :func:`~django.utils.translation.ugettext`
|
|
||||||
* :func:`~django.utils.translation.ugettext_lazy`
|
|
||||||
|
|
||||||
In this example, the text ``"Welcome to my site."`` is marked as a translation
|
In this example, the text ``"Welcome to my site."`` is marked as a translation
|
||||||
string::
|
string::
|
||||||
|
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
|
||||||
def my_view(request):
|
def my_view(request):
|
||||||
|
@ -96,11 +94,11 @@ string::
|
||||||
Obviously, you could code this without using the alias. This example is
|
Obviously, you could code this without using the alias. This example is
|
||||||
identical to the previous one::
|
identical to the previous one::
|
||||||
|
|
||||||
from django.utils.translation import ugettext
|
from django.utils.translation import gettext
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
|
||||||
def my_view(request):
|
def my_view(request):
|
||||||
output = ugettext("Welcome to my site.")
|
output = gettext("Welcome to my site.")
|
||||||
return HttpResponse(output)
|
return HttpResponse(output)
|
||||||
|
|
||||||
Translation works on computed values. This example is identical to the previous
|
Translation works on computed values. This example is identical to the previous
|
||||||
|
@ -123,7 +121,7 @@ examples, is that Django's translation-string-detecting utility,
|
||||||
:djadmin:`django-admin makemessages <makemessages>`, won't be able to find
|
:djadmin:`django-admin makemessages <makemessages>`, won't be able to find
|
||||||
these strings. More on :djadmin:`makemessages` later.)
|
these strings. More on :djadmin:`makemessages` later.)
|
||||||
|
|
||||||
The strings you pass to ``_()`` or ``ugettext()`` can take placeholders,
|
The strings you pass to ``_()`` or ``gettext()`` can take placeholders,
|
||||||
specified with Python's standard named-string interpolation syntax. Example::
|
specified with Python's standard named-string interpolation syntax. Example::
|
||||||
|
|
||||||
def my_view(request, m, d):
|
def my_view(request, m, d):
|
||||||
|
@ -151,7 +149,7 @@ preceding the string, e.g.::
|
||||||
|
|
||||||
def my_view(request):
|
def my_view(request):
|
||||||
# Translators: This message appears on the home page only
|
# Translators: This message appears on the home page only
|
||||||
output = ugettext("Welcome to my site.")
|
output = gettext("Welcome to my site.")
|
||||||
|
|
||||||
The comment will then appear in the resulting ``.po`` file associated with the
|
The comment will then appear in the resulting ``.po`` file associated with the
|
||||||
translatable construct located below it and should also be displayed by most
|
translatable construct located below it and should also be displayed by most
|
||||||
|
@ -173,7 +171,7 @@ more details.
|
||||||
Marking strings as no-op
|
Marking strings as no-op
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
Use the function :func:`django.utils.translation.ugettext_noop()` to mark a
|
Use the function :func:`django.utils.translation.gettext_noop()` to mark a
|
||||||
string as a translation string without translating it. The string is later
|
string as a translation string without translating it. The string is later
|
||||||
translated from a variable.
|
translated from a variable.
|
||||||
|
|
||||||
|
@ -185,11 +183,11 @@ such as when the string is presented to the user.
|
||||||
Pluralization
|
Pluralization
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Use the function :func:`django.utils.translation.ungettext()` to specify
|
Use the function :func:`django.utils.translation.ngettext()` to specify
|
||||||
pluralized messages.
|
pluralized messages.
|
||||||
|
|
||||||
``ungettext`` takes three arguments: the singular translation string, the plural
|
``ngettext()`` takes three arguments: the singular translation string, the
|
||||||
translation string and the number of objects.
|
plural translation string and the number of objects.
|
||||||
|
|
||||||
This function is useful when you need your Django application to be localizable
|
This function is useful when you need your Django application to be localizable
|
||||||
to languages where the number and complexity of `plural forms
|
to languages where the number and complexity of `plural forms
|
||||||
|
@ -200,11 +198,11 @@ of its value.)
|
||||||
|
|
||||||
For example::
|
For example::
|
||||||
|
|
||||||
from django.utils.translation import ungettext
|
from django.utils.translation import ngettext
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
|
||||||
def hello_world(request, count):
|
def hello_world(request, count):
|
||||||
page = ungettext(
|
page = ngettext(
|
||||||
'there is %(count)d object',
|
'there is %(count)d object',
|
||||||
'there are %(count)d objects',
|
'there are %(count)d objects',
|
||||||
count) % {
|
count) % {
|
||||||
|
@ -219,7 +217,7 @@ Note that pluralization is complicated and works differently in each language.
|
||||||
Comparing ``count`` to 1 isn't always the correct rule. This code looks
|
Comparing ``count`` to 1 isn't always the correct rule. This code looks
|
||||||
sophisticated, but will produce incorrect results for some languages::
|
sophisticated, but will produce incorrect results for some languages::
|
||||||
|
|
||||||
from django.utils.translation import ungettext
|
from django.utils.translation import ngettext
|
||||||
from myapp.models import Report
|
from myapp.models import Report
|
||||||
|
|
||||||
count = Report.objects.count()
|
count = Report.objects.count()
|
||||||
|
@ -228,7 +226,7 @@ sophisticated, but will produce incorrect results for some languages::
|
||||||
else:
|
else:
|
||||||
name = Report._meta.verbose_name_plural
|
name = Report._meta.verbose_name_plural
|
||||||
|
|
||||||
text = ungettext(
|
text = ngettext(
|
||||||
'There is %(count)d %(name)s available.',
|
'There is %(count)d %(name)s available.',
|
||||||
'There are %(count)d %(name)s available.',
|
'There are %(count)d %(name)s available.',
|
||||||
count
|
count
|
||||||
|
@ -240,7 +238,7 @@ sophisticated, but will produce incorrect results for some languages::
|
||||||
Don't try to implement your own singular-or-plural logic, it won't be correct.
|
Don't try to implement your own singular-or-plural logic, it won't be correct.
|
||||||
In a case like this, consider something like the following::
|
In a case like this, consider something like the following::
|
||||||
|
|
||||||
text = ungettext(
|
text = ngettext(
|
||||||
'There is %(count)d %(name)s object available.',
|
'There is %(count)d %(name)s object available.',
|
||||||
'There are %(count)d %(name)s objects available.',
|
'There are %(count)d %(name)s objects available.',
|
||||||
count
|
count
|
||||||
|
@ -253,13 +251,13 @@ In a case like this, consider something like the following::
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
When using ``ungettext()``, make sure you use a single name for every
|
When using ``ngettext()``, make sure you use a single name for every
|
||||||
extrapolated variable included in the literal. In the examples above, note
|
extrapolated variable included in the literal. In the examples above, note
|
||||||
how we used the ``name`` Python variable in both translation strings. This
|
how we used the ``name`` Python variable in both translation strings. This
|
||||||
example, besides being incorrect in some languages as noted above, would
|
example, besides being incorrect in some languages as noted above, would
|
||||||
fail::
|
fail::
|
||||||
|
|
||||||
text = ungettext(
|
text = ngettext(
|
||||||
'There is %(count)d %(name)s available.',
|
'There is %(count)d %(name)s available.',
|
||||||
'There are %(count)d %(plural_name)s available.',
|
'There are %(count)d %(plural_name)s available.',
|
||||||
count
|
count
|
||||||
|
@ -355,7 +353,7 @@ For example, to translate the help text of the *name* field in the following
|
||||||
model, do the following::
|
model, do the following::
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class MyThing(models.Model):
|
class MyThing(models.Model):
|
||||||
name = models.CharField(help_text=_('This is the help text'))
|
name = models.CharField(help_text=_('This is the help text'))
|
||||||
|
@ -387,7 +385,7 @@ relying on the fallback English-centric and somewhat naïve determination of
|
||||||
verbose names Django performs by looking at the model's class name::
|
verbose names Django performs by looking at the model's class name::
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class MyThing(models.Model):
|
class MyThing(models.Model):
|
||||||
name = models.CharField(_('name'), help_text=_('This is the help text'))
|
name = models.CharField(_('name'), help_text=_('This is the help text'))
|
||||||
|
@ -403,7 +401,7 @@ For model methods, you can provide translations to Django and the admin site
|
||||||
with the ``short_description`` attribute::
|
with the ``short_description`` attribute::
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class MyThing(models.Model):
|
class MyThing(models.Model):
|
||||||
kind = models.ForeignKey(
|
kind = models.ForeignKey(
|
||||||
|
@ -420,30 +418,30 @@ with the ``short_description`` attribute::
|
||||||
Working with lazy translation objects
|
Working with lazy translation objects
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
The result of a ``ugettext_lazy()`` call can be used wherever you would use a
|
The result of a ``gettext_lazy()`` call can be used wherever you would use a
|
||||||
string (a :class:`str` object) in other Django code, but it may not
|
string (a :class:`str` object) in other Django code, but it may not work with
|
||||||
work with arbitrary Python code. For example, the following won't work because
|
arbitrary Python code. For example, the following won't work because the
|
||||||
the `requests <https://pypi.python.org/pypi/requests/>`_ library doesn't handle
|
`requests <https://pypi.python.org/pypi/requests/>`_ library doesn't handle
|
||||||
``ugettext_lazy`` objects::
|
``gettext_lazy`` objects::
|
||||||
|
|
||||||
body = ugettext_lazy("I \u2764 Django") # (unicode :heart:)
|
body = gettext_lazy("I \u2764 Django") # (unicode :heart:)
|
||||||
requests.post('https://example.com/send', data={'body': body})
|
requests.post('https://example.com/send', data={'body': body})
|
||||||
|
|
||||||
You can avoid such problems by casting ``ugettext_lazy()`` objects to text
|
You can avoid such problems by casting ``gettext_lazy()`` objects to text
|
||||||
strings before passing them to non-Django code::
|
strings before passing them to non-Django code::
|
||||||
|
|
||||||
requests.post('https://example.com/send', data={'body': str(body)})
|
requests.post('https://example.com/send', data={'body': str(body)})
|
||||||
|
|
||||||
If you don't like the long ``ugettext_lazy`` name, you can just alias it as
|
If you don't like the long ``gettext_lazy`` name, you can just alias it as
|
||||||
``_`` (underscore), like so::
|
``_`` (underscore), like so::
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
class MyThing(models.Model):
|
class MyThing(models.Model):
|
||||||
name = models.CharField(help_text=_('This is the help text'))
|
name = models.CharField(help_text=_('This is the help text'))
|
||||||
|
|
||||||
Using ``ugettext_lazy()`` and ``ungettext_lazy()`` to mark strings in models
|
Using ``gettext_lazy()`` and ``ngettext_lazy()`` to mark strings in models
|
||||||
and utility functions is a common operation. When you're working with these
|
and utility functions is a common operation. When you're working with these
|
||||||
objects elsewhere in your code, you should ensure that you don't accidentally
|
objects elsewhere in your code, you should ensure that you don't accidentally
|
||||||
convert them to strings, because they should be converted as late as possible
|
convert them to strings, because they should be converted as late as possible
|
||||||
|
@ -462,10 +460,10 @@ integer as the ``number`` argument. Then ``number`` will be looked up in the
|
||||||
dictionary under that key during string interpolation. Here's example::
|
dictionary under that key during string interpolation. Here's example::
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.translation import ungettext_lazy
|
from django.utils.translation import ngettext_lazy
|
||||||
|
|
||||||
class MyForm(forms.Form):
|
class MyForm(forms.Form):
|
||||||
error_message = ungettext_lazy("You only provided %(num)d argument",
|
error_message = ngettext_lazy("You only provided %(num)d argument",
|
||||||
"You only provided %(num)d arguments", 'num')
|
"You only provided %(num)d arguments", 'num')
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
@ -477,7 +475,7 @@ If the string contains exactly one unnamed placeholder, you can interpolate
|
||||||
directly with the ``number`` argument::
|
directly with the ``number`` argument::
|
||||||
|
|
||||||
class MyForm(forms.Form):
|
class MyForm(forms.Form):
|
||||||
error_message = ungettext_lazy(
|
error_message = ngettext_lazy(
|
||||||
"You provided %d argument",
|
"You provided %d argument",
|
||||||
"You provided %d arguments",
|
"You provided %d arguments",
|
||||||
)
|
)
|
||||||
|
@ -499,10 +497,10 @@ that runs the ``str.format()`` method only when the result is included
|
||||||
in a string. For example::
|
in a string. For example::
|
||||||
|
|
||||||
from django.utils.text import format_lazy
|
from django.utils.text import format_lazy
|
||||||
from django.utils.translation import ugettext_lazy
|
from django.utils.translation import gettext_lazy
|
||||||
...
|
...
|
||||||
name = ugettext_lazy('John Lennon')
|
name = gettext_lazy('John Lennon')
|
||||||
instrument = ugettext_lazy('guitar')
|
instrument = gettext_lazy('guitar')
|
||||||
result = format_lazy('{name}: {instrument}', name=name, instrument=instrument)
|
result = format_lazy('{name}: {instrument}', name=name, instrument=instrument)
|
||||||
|
|
||||||
In this case, the lazy translations in ``result`` will only be converted to
|
In this case, the lazy translations in ``result`` will only be converted to
|
||||||
|
@ -518,7 +516,7 @@ this function inside a lazy call yourself. For example::
|
||||||
|
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
mark_safe_lazy = lazy(mark_safe, str)
|
mark_safe_lazy = lazy(mark_safe, str)
|
||||||
|
|
||||||
|
@ -580,7 +578,7 @@ require translation in the future::
|
||||||
<title>{% trans "myvar" noop %}</title>
|
<title>{% trans "myvar" noop %}</title>
|
||||||
|
|
||||||
Internally, inline translations use an
|
Internally, inline translations use an
|
||||||
:func:`~django.utils.translation.ugettext` call.
|
:func:`~django.utils.translation.gettext` call.
|
||||||
|
|
||||||
In case a template var (``myvar`` above) is passed to the tag, the tag will
|
In case a template var (``myvar`` above) is passed to the tag, the tag will
|
||||||
first resolve such variable to a string at run-time and then look up that
|
first resolve such variable to a string at run-time and then look up that
|
||||||
|
@ -690,8 +688,8 @@ A more complex example::
|
||||||
|
|
||||||
When you use both the pluralization feature and bind values to local variables
|
When you use both the pluralization feature and bind values to local variables
|
||||||
in addition to the counter value, keep in mind that the ``blocktrans``
|
in addition to the counter value, keep in mind that the ``blocktrans``
|
||||||
construct is internally converted to an ``ungettext`` call. This means the
|
construct is internally converted to an ``ngettext`` call. This means the
|
||||||
same :ref:`notes regarding ungettext variables <pluralization-var-notes>`
|
same :ref:`notes regarding ngettext variables <pluralization-var-notes>`
|
||||||
apply.
|
apply.
|
||||||
|
|
||||||
Reverse URL lookups cannot be carried out within the ``blocktrans`` and should
|
Reverse URL lookups cannot be carried out within the ``blocktrans`` and should
|
||||||
|
@ -1282,7 +1280,7 @@ Django provides two mechanisms to internationalize URL patterns:
|
||||||
the language to activate from the requested URL.
|
the language to activate from the requested URL.
|
||||||
|
|
||||||
* Making URL patterns themselves translatable via the
|
* Making URL patterns themselves translatable via the
|
||||||
:func:`django.utils.translation.ugettext_lazy()` function.
|
:func:`django.utils.translation.gettext_lazy()` function.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
|
@ -1373,11 +1371,11 @@ Translating URL patterns
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
URL patterns can also be marked translatable using the
|
URL patterns can also be marked translatable using the
|
||||||
:func:`~django.utils.translation.ugettext_lazy` function. Example::
|
:func:`~django.utils.translation.gettext_lazy` function. Example::
|
||||||
|
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
from django.conf.urls.i18n import i18n_patterns
|
from django.conf.urls.i18n import i18n_patterns
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from about import views as about_views
|
from about import views as about_views
|
||||||
from news import views as news_views
|
from news import views as news_views
|
||||||
|
@ -1639,12 +1637,12 @@ That's it. Your translations are ready for use.
|
||||||
(Byte Order Mark) so if your text editor adds such marks to the beginning of
|
(Byte Order Mark) so if your text editor adds such marks to the beginning of
|
||||||
files by default then you will need to reconfigure it.
|
files by default then you will need to reconfigure it.
|
||||||
|
|
||||||
Troubleshooting: ``ugettext()`` incorrectly detects ``python-format`` in strings with percent signs
|
Troubleshooting: ``gettext()`` incorrectly detects ``python-format`` in strings with percent signs
|
||||||
---------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
In some cases, such as strings with a percent sign followed by a space and a
|
In some cases, such as strings with a percent sign followed by a space and a
|
||||||
:ref:`string conversion type <old-string-formatting>` (e.g.
|
:ref:`string conversion type <old-string-formatting>` (e.g.
|
||||||
``_("10% interest")``), :func:`~django.utils.translation.ugettext` incorrectly
|
``_("10% interest")``), :func:`~django.utils.translation.gettext` incorrectly
|
||||||
flags strings with ``python-format``.
|
flags strings with ``python-format``.
|
||||||
|
|
||||||
If you try to compile message files with incorrectly flagged strings, you'll
|
If you try to compile message files with incorrectly flagged strings, you'll
|
||||||
|
@ -1655,7 +1653,7 @@ unlike 'msgid'``.
|
||||||
To workaround this, you can escape percent signs by adding a second percent
|
To workaround this, you can escape percent signs by adding a second percent
|
||||||
sign::
|
sign::
|
||||||
|
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
output = _("10%% interest)
|
output = _("10%% interest)
|
||||||
|
|
||||||
Or you can use ``no-python-format`` so that all percent signs are treated as
|
Or you can use ``no-python-format`` so that all percent signs are treated as
|
||||||
|
@ -1859,7 +1857,7 @@ For example::
|
||||||
cur_language = translation.get_language()
|
cur_language = translation.get_language()
|
||||||
try:
|
try:
|
||||||
translation.activate(language)
|
translation.activate(language)
|
||||||
text = translation.ugettext('welcome')
|
text = translation.gettext('welcome')
|
||||||
finally:
|
finally:
|
||||||
translation.activate(cur_language)
|
translation.activate(cur_language)
|
||||||
return text
|
return text
|
||||||
|
@ -1882,7 +1880,7 @@ enter and restores it on exit. With it, the above example becomes::
|
||||||
|
|
||||||
def welcome_translated(language):
|
def welcome_translated(language):
|
||||||
with translation.override(language):
|
with translation.override(language):
|
||||||
return translation.ugettext('welcome')
|
return translation.gettext('welcome')
|
||||||
|
|
||||||
Language cookie
|
Language cookie
|
||||||
---------------
|
---------------
|
||||||
|
@ -2016,12 +2014,12 @@ Notes:
|
||||||
|
|
||||||
* If you define a custom :setting:`LANGUAGES` setting, as explained in the
|
* If you define a custom :setting:`LANGUAGES` setting, as explained in the
|
||||||
previous bullet, you can mark the language names as translation strings
|
previous bullet, you can mark the language names as translation strings
|
||||||
-- but use :func:`~django.utils.translation.ugettext_lazy` instead of
|
-- but use :func:`~django.utils.translation.gettext_lazy` instead of
|
||||||
:func:`~django.utils.translation.ugettext` to avoid a circular import.
|
:func:`~django.utils.translation.gettext` to avoid a circular import.
|
||||||
|
|
||||||
Here's a sample settings file::
|
Here's a sample settings file::
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
LANGUAGES = [
|
LANGUAGES = [
|
||||||
('de', _('German')),
|
('de', _('German')),
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class Site(models.Model):
|
class Site(models.Model):
|
||||||
|
|
|
@ -17,7 +17,7 @@ from django.forms.fields import CharField, Field, IntegerField
|
||||||
from django.test import SimpleTestCase, TestCase, override_settings
|
from django.test import SimpleTestCase, TestCase, override_settings
|
||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from .models.custom_user import (
|
from .models.custom_user import (
|
||||||
CustomUser, CustomUserWithoutIsActiveField, ExtensionUser,
|
CustomUser, CustomUserWithoutIsActiveField, ExtensionUser,
|
||||||
|
|
|
@ -16,7 +16,7 @@ from django.core.management import call_command
|
||||||
from django.core.management.base import CommandError
|
from django.core.management.base import CommandError
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .models import (
|
from .models import (
|
||||||
CustomUser, CustomUserNonUniqueUsername, CustomUserWithFK, Email,
|
CustomUser, CustomUserNonUniqueUsername, CustomUserWithFK, Email,
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue