mirror of
https://github.com/Hopiu/django-modeltranslation.git
synced 2026-04-25 15:34:42 +00:00
Moved determination of default language into settings.
This commit is contained in:
parent
a1bd45eaa9
commit
974503ca0a
5 changed files with 26 additions and 45 deletions
|
|
@ -6,8 +6,9 @@ from django.conf import settings
|
|||
from django.contrib import admin
|
||||
from django.contrib.contenttypes import generic
|
||||
|
||||
from modeltranslation.settings import *
|
||||
from modeltranslation.translator import translator
|
||||
from modeltranslation.utils import get_translation_fields, get_default_language
|
||||
from modeltranslation.utils import get_translation_fields
|
||||
# Ensure that models are registered for translation before TranslationAdmin
|
||||
# runs. The import is supposed to resolve a race condition between model import
|
||||
# and translation registration in production (see issue 19).
|
||||
|
|
@ -28,13 +29,13 @@ class TranslationAdminBase(object):
|
|||
# For every localized field copy the widget from the original field
|
||||
if db_field.name in trans_opts.localized_fieldnames_rev:
|
||||
orig_fieldname = trans_opts.localized_fieldnames_rev[db_field.name]
|
||||
orig_formfield = self.formfield_for_dbfield( \
|
||||
self.model._meta.get_field(orig_fieldname),
|
||||
**kwargs)
|
||||
orig_formfield = self.formfield_for_dbfield(\
|
||||
self.model._meta.get_field(orig_fieldname),
|
||||
**kwargs)
|
||||
|
||||
# In case the original form field was required, make the default
|
||||
# translation field required instead.
|
||||
if db_field.language == get_default_language() and \
|
||||
if db_field.language == DEFAULT_LANGUAGE and\
|
||||
orig_formfield.required:
|
||||
orig_formfield.required = False
|
||||
orig_formfield.blank = True
|
||||
|
|
@ -82,8 +83,8 @@ class TranslationAdmin(admin.ModelAdmin, TranslationAdminBase):
|
|||
display_index = display_new.index(field)
|
||||
translation_fields = get_translation_fields(field)
|
||||
editable_new[index:index + 1] = translation_fields
|
||||
display_new[display_index:display_index + 1] = \
|
||||
translation_fields
|
||||
display_new[display_index:display_index + 1] =\
|
||||
translation_fields
|
||||
self.list_editable = editable_new
|
||||
self.list_display = display_new
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,8 @@ from django.db.models.fields import Field, CharField
|
|||
from django.db.models.fields.related import (ForeignKey, OneToOneField,
|
||||
ManyToManyField)
|
||||
|
||||
from modeltranslation.settings import STD_TRANSLATION_FIELDS
|
||||
from modeltranslation.settings import *
|
||||
from modeltranslation.utils import (get_language,
|
||||
get_default_language,
|
||||
build_localized_fieldname,
|
||||
build_localized_verbose_name)
|
||||
|
||||
|
|
@ -93,7 +92,7 @@ class TranslationField(Field):
|
|||
|
||||
def pre_save(self, model_instance, add):
|
||||
val = super(TranslationField, self).pre_save(model_instance, add)
|
||||
if get_default_language() == self.language and not add:
|
||||
if DEFAULT_LANGUAGE == self.language and not add:
|
||||
# Rule is: 3. Assigning a value to a translation field of the
|
||||
# default language also updates the original field
|
||||
model_instance.__dict__[self.translated_field.name] = val
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ from django.conf import settings
|
|||
from django.core.management.base import (BaseCommand, CommandError,
|
||||
NoArgsCommand)
|
||||
|
||||
from modeltranslation.settings import DEFAULT_LANGUAGE
|
||||
from modeltranslation.translator import translator
|
||||
from modeltranslation.utils import (build_localized_fieldname,
|
||||
get_default_language)
|
||||
from modeltranslation.utils import build_localized_fieldname
|
||||
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
|
|
@ -13,15 +13,13 @@ class Command(NoArgsCommand):
|
|||
'translated application using the value of the original field.'
|
||||
|
||||
def handle(self, **options):
|
||||
default_lang = get_default_language()
|
||||
print "Using default language:", default_lang
|
||||
|
||||
print "Using default language:", DEFAULT_LANGUAGE
|
||||
for model, trans_opts in translator._registry.items():
|
||||
print "Updating data of model '%s'" % model
|
||||
for obj in model.objects.all():
|
||||
for fieldname in trans_opts.fields:
|
||||
def_lang_fieldname = \
|
||||
build_localized_fieldname(fieldname, default_lang)
|
||||
def_lang_fieldname =\
|
||||
build_localized_fieldname(fieldname, DEFAULT_LANGUAGE)
|
||||
#print "setting %s from %s to %s." % \
|
||||
#(def_lang_fieldname, fieldname,
|
||||
#obj.__dict__[fieldname])
|
||||
|
|
|
|||
|
|
@ -18,7 +18,13 @@ else:
|
|||
"MODELTRANSLATION_TRANSLATION_REGISTRY "
|
||||
"setting yet.")
|
||||
|
||||
AVAILABLE_LANGUAGES = [l[0] for l in settings.LANGUAGES]
|
||||
DEFAULT_LANGUAGE = getattr(settings, 'MODELTRANSLATION_DEFAULT_LANGUAGE', None)
|
||||
if DEFAULT_LANGUAGE and DEFAULT_LANGUAGE not in AVAILABLE_LANGUAGES:
|
||||
raise ImproperlyConfigured('MODELTRANSLATION_DEFAULT_LANGUAGE not '
|
||||
'in LANGUAGES setting.')
|
||||
elif not DEFAULT_LANGUAGE:
|
||||
DEFAULT_LANGUAGE = AVAILABLE_LANGUAGES[0]
|
||||
|
||||
# Only override this setting if you know what you are doing! It merely exist
|
||||
# to test currently unsupported fields.
|
||||
|
|
|
|||
|
|
@ -6,12 +6,7 @@ from django.contrib.contenttypes.models import ContentType
|
|||
from django.utils.translation import get_language as _get_language
|
||||
from django.utils.functional import lazy
|
||||
|
||||
from modeltranslation.settings import DEFAULT_LANGUAGE
|
||||
|
||||
|
||||
def get_available_languages():
|
||||
"""Returns a list of the language codes in settings.LANGUAGES"""
|
||||
return [l[0] for l in settings.LANGUAGES]
|
||||
from modeltranslation.settings import *
|
||||
|
||||
|
||||
def get_language():
|
||||
|
|
@ -20,34 +15,16 @@ def get_language():
|
|||
settings.LANGUAGES (Django does not seem to guarantee this for us).
|
||||
"""
|
||||
lang = _get_language()
|
||||
available_languages = get_available_languages()
|
||||
if lang not in available_languages and '-' in lang:
|
||||
if lang not in AVAILABLE_LANGUAGES and '-' in lang:
|
||||
lang = lang.split('-')[0]
|
||||
if lang in available_languages:
|
||||
if lang in AVAILABLE_LANGUAGES:
|
||||
return lang
|
||||
return available_languages[0]
|
||||
|
||||
|
||||
def get_default_language():
|
||||
"""
|
||||
Returns the language to use as the default language. This is either
|
||||
the value of settings.MODELTRANSLATION_DEFAULT_LANGUAGE (if it's in the
|
||||
list of settings.LANGUAGES) or the first item in settings.LANGUAGES.
|
||||
"""
|
||||
available_languages = get_available_languages()
|
||||
default_language = DEFAULT_LANGUAGE
|
||||
if default_language and default_language not in available_languages:
|
||||
raise ImproperlyConfigured('MODELTRANSLATION_DEFAULT_LANGUAGE not '
|
||||
'in LANGUAGES setting.')
|
||||
if not default_language:
|
||||
default_language = available_languages[0]
|
||||
return default_language
|
||||
return AVAILABLE_LANGUAGES[0]
|
||||
|
||||
|
||||
def get_translation_fields(field):
|
||||
"""Returns a list of localized fieldnames for a given field."""
|
||||
return [build_localized_fieldname(field, l) for l in\
|
||||
get_available_languages()]
|
||||
return [build_localized_fieldname(field, l) for l in AVAILABLE_LANGUAGES]
|
||||
|
||||
|
||||
def build_localized_fieldname(field_name, lang):
|
||||
|
|
|
|||
Loading…
Reference in a new issue