mirror of
https://github.com/Hopiu/django-modeltranslation.git
synced 2026-03-16 22:10:31 +00:00
Added setting to override the default language. Resolves issue 2.
This commit is contained in:
parent
b8fab905dc
commit
9b68efda05
4 changed files with 36 additions and 5 deletions
|
|
@ -1,3 +1,5 @@
|
|||
ADDED: Setting to override the default language.
|
||||
(thanks to jaap, resolves issue 2)
|
||||
ADDED: Support for related fields - ForeignKey, ManyToManyField and
|
||||
OneToOneField.
|
||||
(resolves issue 15)
|
||||
|
|
|
|||
|
|
@ -96,8 +96,17 @@ modeltranslation app, but rather required for Django to be able to
|
|||
(statically) translate the verbose names of the languages using the standard
|
||||
``i18n`` solution.
|
||||
|
||||
**settings.MODELTRANSLATION_DEFAULT_LANGUAGE**
|
||||
|
||||
*New in development version*
|
||||
To override the default language as described in settings.LANGUAGES, define
|
||||
``MODELTRANSLATION_DEFAULT_LANGUAGE``. Note that the value has to be in
|
||||
settings.LANGUAGES, otherwise an exception will be raised.
|
||||
|
||||
**settings.TRANSLATION_REGISTRY**
|
||||
|
||||
TODO: Rename setting to MODELTRANSLATION_TRANSLATION_REGISTRY.
|
||||
|
||||
In order to be able to import the project's ``translation.py`` registration
|
||||
file the ``TRANSLATION_REGISTRY`` must be set to a value in the form
|
||||
``<PROJECT_MODULE>.translation``. E.g. if your project is located in a folder
|
||||
|
|
@ -366,7 +375,7 @@ custom admin class and that's done in the example above. After that the
|
|||
|
||||
Inlines
|
||||
-------
|
||||
*New in development version*
|
||||
*New in 0.2*
|
||||
Support for tabular and stacked inlines, common and generic ones.
|
||||
|
||||
A translated inline must derive from one of the following classes:
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ from modeltranslation.translator import translator
|
|||
|
||||
# Import the project's global "translation.py" which registers model
|
||||
# classes and their translation options with the translator object.
|
||||
# TODO: Rename setting to MODELTRANSLATION_TRANSLATION_REGISTRY.
|
||||
if getattr(settings, 'TRANSLATION_REGISTRY', False):
|
||||
try:
|
||||
__import__(settings.TRANSLATION_REGISTRY, {}, {}, [''])
|
||||
|
|
|
|||
|
|
@ -1,19 +1,24 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from django.db import models
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.exceptions import ValidationError, ImproperlyConfigured
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.utils.translation import get_language as _get_language
|
||||
from django.utils.functional import lazy
|
||||
|
||||
|
||||
def get_available_languages():
|
||||
"""Returns a list of the language codes in settings.LANGUAGES"""
|
||||
return [l[0] for l in settings.LANGUAGES]
|
||||
|
||||
|
||||
def get_language():
|
||||
"""
|
||||
Return an active language code that is guaranteed to be in
|
||||
settings.LANGUAGES (Django does not seem to guarantee this for us.)
|
||||
"""
|
||||
lang = _get_language()
|
||||
available_languages = [l[0] for l in settings.LANGUAGES]
|
||||
available_languages = get_available_languages()
|
||||
if lang not in available_languages and '-' in lang:
|
||||
lang = lang.split('-')[0]
|
||||
if lang in available_languages:
|
||||
|
|
@ -22,12 +27,26 @@ def get_language():
|
|||
|
||||
|
||||
def get_default_language():
|
||||
return settings.LANGUAGES[0][0]
|
||||
"""
|
||||
Returns the language to use as the default language. This is either
|
||||
the value of settings.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 = 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.')
|
||||
if not default_language:
|
||||
default_language = available_languages[0]
|
||||
return default_language
|
||||
|
||||
|
||||
def get_translation_fields(field):
|
||||
"""Returns a list of localized fieldnames for a given field."""
|
||||
return [build_localized_fieldname(field, l[0]) for l in settings.LANGUAGES]
|
||||
return [build_localized_fieldname(field, l) for l in\
|
||||
get_available_languages()]
|
||||
|
||||
|
||||
def build_localized_fieldname(field_name, lang):
|
||||
|
|
|
|||
Loading…
Reference in a new issue