Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Thêm bản dịch cho instance model trong Django

Trong bài viết này, chúng ta sẽ học cách tạo bản dịch cho bất kỳ instance model nào. Đôi khi bạn cần lưu trữ dữ liệu như ID, tên, trích dẫn, v.v. và hiển thị chúng bằng nhiều ngôn ngữ khác nhau. Thông thường điều này đòi hỏi nhiều thao tác với database, nhưng hôm nay tôi sẽ chỉ cho bạn cách đạt được kết quả tương tự chỉ với vài dòng cấu hình.

Thiết lập dự án

Tạo dự án Django và một app. Cấu hình urls và thêm app vào INSTALLED_APPS. Chúng ta chỉ cần làm việc với settings.py, admin.py, models.py và admin URL.

Ví dụ chi tiết

1. Cài đặt package

pip install django-klingon

2. Cấu hình settings.py

INSTALLED_APPS += ['klingon']
KLINGON_DEFAULT_LANGUAGE = 'en'

Thêm klingon vào INSTALLED_APPS và đặt tiếng Anh làm ngôn ngữ mặc định.

3. Tạo Model (models.py)

from django.db import models
from klingon.models import Translatable

class TeacherData(models.Model, Translatable):
    name = models.CharField(max_length=100)
    ClassTeacherOF = models.CharField(max_length=100)
    Salary = models.CharField(max_length=100)
    a_simple_word = models.CharField(max_length=100)
    
    # Định nghĩa trường cần dịch
    translatable_fields = ('a_simple_word',)

Chúng ta tạo model và chỉ định trường a_simple_word là trường cần dịch qua thuộc tính translatable_fields.

4. Cấu hình Admin (admin.py)

from django.contrib import admin
from .models import TeacherData
from klingon.admin import TranslationInline, create_translations

class TeacherAdmin(admin.ModelAdmin):
    inlines = [TranslationInline]
    actions = [create_translations]

admin.site.register(TeacherData, TeacherAdmin)

Đăng ký model với admin và thêm inline translation cùng action tạo bản dịch.

Kiểm tra kết quả

Chạy Python shell và thực hiện:

In [1]: from formhandlingapp.models import *
In [2]: data = TeacherData.objects.create(name="ama4", ClassTeacherOF="10", Salary="33322", a_simple_word="how are you")
In [3]: data.set_translation('jp', 'a_simple_word', 'お元気ですか')

Bây giờ bạn có thể thấy đối tượng bản dịch được tạo. Bạn cũng có thể thêm bản dịch qua views.py.

Truy cập https://127.0.0.1/admin/ để xem giao diện quản trị với tính năng dịch thuật.

Thêm bản dịch cho instance model trong Django