# Django Modeltranslation

***

**1. Translating Model Fields**

```python
from modeltranslation.decorators import register
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions:
    fields = ('title', 'content')
```

**2. Translating Model Choices**

```python
from django.utils.translation import gettext_lazy as _
from modeltranslation.translator import translator

translator.register(Article.CHOICES)
translator.translate(Article.CHOICES, from_language='en', to_language='fr')
```

**3. Translating Model-Wide Content**

```python
from django.db import models
from django.utils.translation import gettext_lazy as _
from modeltranslation.decorators import register

class Article(models.Model):
    translations = models.JSONField(default=dict)

@register(Article)
class ArticleTranslationOptions:
    fields = ('translations',)
```

**4. Translating Related Models**

```python
from django.db import models
from modeltranslation.translator import TranslationOptions

class Category(models.Model):
    name = models.CharField(max_length=200)

class Article(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

class CategoryTranslationOptions(TranslationOptions):
    fields = ('name',)
```

**5. Translating Models with Generic Foreign Keys**

```python
from django.contrib.contenttypes.models import ContentType
from django.db import models
from modeltranslation.translator import TranslationOptions

class GenericModel(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content = models.TextField()

class GenericModelTranslationOptions(TranslationOptions):
    fields = ('content',)
```

**6. Translating Models with M2M Fields**

```python
from django.db import models
from modeltranslation.translator import TranslationOptions

class Tag(models.Model):
    name = models.CharField(max_length=200)

class Article(models.Model):
    tags = models.ManyToManyField(Tag)

class TagTranslationOptions(TranslationOptions):
    fields = ('name',)
```

**7. Translating Models with Shared Translations**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class SharedTranslationModel(models.Model):
    name = models.CharField(max_length=200)

@register(SharedTranslationModel)
class SharedTranslationModelTranslationOptions(TranslationOptions):
    fields = ('name',)
```

**8. Translating Models with Inherit Translation**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class BaseArticle(models.Model):
    title = models.CharField(max_length=200)

class Article(BaseArticle):
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    inherit_from = 'basearticle'
```

**9. Translating Models with Conditional Translation**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    is_published = models.BooleanField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    exclude_fields_without_prefix = ('content',)
    conditional_fields = {
        'is_published': lambda record: record.is_published
    }
```

**10. Translating Models with Language Fallback**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    fallback_values = {
        'en-us': ('Title', 'Content')
    }
```

**11. Translating Models with Fallback Language**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    fallback_to_language_code = 'en-us'
```

**12. Translating Models with Translated Fields**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title_translated = models.CharField(max_length=200)
    content_translated = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title_translated', 'content_translated')
```

**13. Translating Models with Translation Proxies**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class ArticleBase(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

class ArticleTranslation(models.Model):
    main = models.ForeignKey(ArticleBase, on_delete=models.CASCADE)
    language_code = models.CharField(max_length=2)
    title_translated = models.CharField(max_length=200)
    content_translated = models.TextField()

@register(ArticleBase)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title_translated', 'content_translated')
```

**14. Translating Models with Translated Fields in Separate Tables**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class ArticleBase(models.Model):
    title = models.CharField(max_length=200)

class ArticleTranslation(models.Model):
    articlebase = models.ForeignKey(ArticleBase, on_delete=models.CASCADE)
    language_code = models.CharField(max_length=2)
    title_translated = models.CharField(max_length=200)

@register(ArticleBase)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title_translated',)
    translation_fields = ('title_translated',)
```

**15. Translating Models with Translated Related Models**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class CategoryBase(models.Model):
    name = models.CharField(max_length=200)

class CategoryTranslation(models.Model):
    categorybase = models.ForeignKey(CategoryBase, on_delete=models.CASCADE)
    language_code = models.CharField(max_length=2)
    name_translated = models.CharField(max_length=200)

@register(CategoryBase)
class CategoryTranslationOptions(TranslationOptions):
    fields = ('name_translated',)
    translation_fields = ('name_translated',)
```

**16. Translating Models with Translated Generic Related Models**

```python
from django.contrib.contenttypes.models import ContentType
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class GenericBaseModel(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()

class GenericBaseTranslation(models.Model):
    genericbasemodel = models.ForeignKey(GenericBaseModel, on_delete=models.CASCADE)
    language_code = models.CharField(max_length=2)
    name_translated = models.CharField(max_length=200)

@register(GenericBaseModel)
class GenericBaseTranslationOptions(TranslationOptions):
    fields = ('name_translated',)
    translation_fields = ('name_translated',)
```

**17. Translating Models with Translated M2M Related Models**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class TagBase(models.Model):
    name = models.CharField(max_length=200)

class TagTranslation(models.Model):
    tagbase = models.ForeignKey(TagBase, on_delete=models.CASCADE)
    language_code = models.CharField(max_length=2)
    name_translated = models.CharField(max_length=200)

@register(TagBase)
class TagTranslationOptions(TranslationOptions):
    fields = ('name_translated',)
    translation_fields = ('name_translated',)
```

**18. Translating Models with Prefix**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    prefix = 'translated_'
```

**19. Translating Models with Translation Aliases**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    translation_aliases = {
        'title': 'translated_title',
        'content': 'translated_content'
    }
```

**20. Translating Models with Extra Translation Fields**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    translated_title_length = models.IntegerField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    extra_fields = ('translated_title_length',)
```

**21. Translating Models with Optional Translated Fields**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    translated_title = models.CharField(max_length=200, blank=True, null=True)

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content', 'translated_title')
    optional_fields = ('translated_title',)
```

**22. Translating Models with Multiple Languages**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    languages = ('en', 'fr', 'es')
```

**23. Translating Models with Default Language**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    default_language = 'en'
```

**24. Translating Models with Language Detection**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    autodetect = True
```

**25. Translating Models with Locale-Aware Translation**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    locale_aware = True
```

**26. Translating Models with Locale-Aware Fallback**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    locale_aware = True
    autodetect = True
```

**27. Translating Models with Language-Independent Fields**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField()

@register(Article)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
    exclude_fields = ('created_at',)
```

**28. Translating Models with Enabled/Disabled Translation**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article, enabled=True)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
```

**29. Translating Models with Disabled Translation**

```python
from django.db import models
from modeltranslation.decorators import register
from modeltranslation.translator import TranslationOptions

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

@register(Article, enabled=False)
class ArticleTranslationOptions(TranslationOptions):
    fields = ('title', 'content')
```

**30. Translating Models with Language-Aware Admin Interface**

```python
from django.contrib import admin
from modeltranslation.admin import TranslationAdmin

class ArticleAdmin(TranslationAdmin):
    model = Article

admin.site.register(Article, ArticleAdmin)
```

**31. Translating Models with Template Context Extensions**

```python
from django.template import Context
from modeltranslation.context import update_translation_context

def view_article(request, article_id):
    article = Article.objects.get(id=article_id)
    context = Context({'article': article})
    update_translation_context(context, request)
    return render(request, 'view_article.html', context)
```

**32. Translating Models with Language Chooser**

```python
from django.contrib.sites.models import Site
from modeltranslation.middleware import LanguageMiddleware

class LanguageMiddleware(LanguageMiddleware):
    def process_request(self, request):
        site = Site.objects.get_current()
        language = request.META.get('HTTP_ACCEPT_LANGUAGE', None)
        translation = site.translation_settings.get_translation(language)
        request.LANGUAGE_CODE = translation.language_code
```

**33. Translating Models with LocaleMiddleware**

```python
from django.utils import translation
from modeltranslation.middleware import LocaleMiddleware

class LocaleMiddleware(LocaleMiddleware):
    def process_request(self, request):
        translation.activate(request.LANGUAGE_CODE)
```

**34. Translating Models with Django-Admin-Translation**

```python
from django.contrib import admin
from django_admin_translation.admin import TranslatableAdmin

class ArticleAdmin(TranslatableAdmin):
    model = Article

admin.site.register(Article, ArticleAdmin)
```

**35. Translating Models with TranslatableModel**

```python
from modeltranslation.models import TranslatableModel

class Article(TranslatableModel):
    title = models.CharField(max_length=200)
    content = models.TextField()

    class TranslationOptions:
        fields = ('title', 'content')
```

**36. Translating Models with django-transmeta**

```python
from django_transmeta import TranslationModel

class Article(TranslationModel):
    title = models.CharField(max_length=200)
    content = models.TextField()

class ArticleTranslation(TranslationModel.Translation):
    article = TranslationModel.TranslationMeta.fk('Article')
    title = models.CharField(max_length=200)
    content = models.TextField()
```
