I want to create a package for django on three languages. And I need to show data from db to admin depending on his language. My model:
class Author(models.Model):
    name_en = models.CharField(max_length=200, default='No name')
    name_ua = models.CharField(max_length=200, default='No name')
    name_ru = models.CharField(max_length=200, default='No name')
    biography_en = models.TextField(default='No biography')
    biography_ua = models.TextField(default='No biography')
    biography_ru = models.TextField(default='No biography')
    def __str__(self):
        lang = get_language()
        if lang == 'ru':
            author = self.name_ru
        elif lang == 'ua':
            author = self.name_ua
        else:
            author = self.name_en
        return author 
class Phrases(models.Model):
    phrase_en = models.TextField(default='No phrase')
    phrase_ua = models.TextField(default='No phrase')
    phrase_ru = models.TextField(default='No phrase')
    author = models.ForeignKey(Author)
    PHRASE_STATUS = (
        ('published', 'Published'),
        ('draft', 'Draft'),
        ('unpublished', 'Unpublished'),
    )
    showed = models.BooleanField(default=False)
    phrase_status = models.CharField(max_length=11, choices=PHRASE_STATUS, default='published')
    pub_date = models.DateTimeField('Date published', auto_now_add=True)
    def __str__(self):
        return ''.join([self.phrase_en[:30], '...'])
And here is my not finished admin.py
from django.utils.translation import get_language
class PhilosophyAllPhrases(admin.ModelAdmin):
    model = Phrases
    actions_on_bottom = True
    actions_on_top = True
    actions_selection_counter = True
    date_hierarchy = 'pub_date'
    lang = get_language()
    fieldsets = [
        (
            'English', {
                'fields': ['phrase_en'],
                'classes': ['collapses']
            }
        ), (
            'Russian', {
                'fields': ['phrase_ru'],
                'classes': ['collapses']
            }
        ), (
            'Ukraine', {
                'fields': ['phrase_ua'],
                'classes': ['collapses']
            }
        ), (
            'Settings', {
                'fields': ['author', 'phrase_status']
            }
        )
    ]
    list_display = ('phrase_content', 'phrase_author', 'phrase_status')
    def phrase_author(self, obj):
        self.lang = get_language()
        if self.lang == 'ru':
            author = obj.author.name_ru
        elif self.lang == 'ua':
            author = obj.author.name_ua
        else:
            author = obj.author.name_en
        return format_html('<span class="pp_author">%s</span>' % author)
    def phrase_content(self, obj):
        self.lang = get_language()
        if self.lang == 'ru':
            phrase = obj.phrase_ru
        elif self.lang == 'ua':
            phrase = obj.phrase_ua
        else:
            phrase = obj.phrase_en
        return format_html(('%s...' % phrase[:100]).upper())
So the method get_language() is working properly in the phrase_author(), and phrase_content(). I need to change fieldsets and phrase_author.admin_order_field depending on user language but it returns the default 'en-us', not current. May be I must to use another method? Or what I'm doing wrong? For example I want to do like this:
lang = get_language()
if lang == 'ru':
    phrase = (
        'Фраза', {
            'fields': ['phrase_ru'],
            'classes': ['collapses']
        }
    )
elif lang == 'en':
    phrase = (
        'Phrase', {
            'fields': ['phrase_en'],
            'classes': ['collapses']
        }
    )
settings = (
    'Settings', {
        'fields': ['author', 'phrase_status']
    }
)
fieldsets = [phrase, settings]