2010-06-23 42 views
8

Tôi có và trang web django cũ (0,97-trước-SVN-7457) và tôi sắp thực hiện một số thay đổi và làm cho trang web chạy trên mã phát triển hiện tại của django.Cách dễ nhất để có một trang web django đa ngôn ngữ?

Tôi có rất nhiều nội dung cần được giữ nguyên. Khi tôi bắt đầu trang web, tôi đã thực hiện một xấu xí "hack" để có được một trang web ngôn ngữ kép, vì vậy kết quả không phải là khá:

Đây là mô hình của tôi:

class Entry(models.Model): 
title_NO = models.CharField(max_length=500) 
teaser_NO = models.TextField(blank=True, null=True,) 
body_NO = models.TextField(blank=True, null=True,) 
title_EN = models.CharField(max_length=500, blank=True, null=True) 
teaser_EN = models.TextField(blank=True, null=True,) 
body_EN = models.TextField(blank=True, null=True,) 
... 

Trong mẫu của tôi, tôi đã viết:

<div id="language_NO"> 
<h1>{{object.title_NO}}</h1> 
..... 
</div> 
<div id="language_EN"> 
<h1>{{object.title_EN}}</h1> 
..... 
</div> 

Và sử dụng một javascript đơn giản để xác định mà div để hiển thị (in nội dung hai lần trong các mẫu là rất xấu xí, tôi biết!)

Vì vậy, bây giờ mà tôi muốn thực hiện một số thay đổi, cách tốt nhất để đi là gì?

Tôi đã cố gắng đọc tài liệu về chủ đề, nhưng tôi không thể tìm thấy bất cứ điều gì giải thích phải làm gì với các url và mẫu.

Điều duy nhất hiện nay tôi đã tìm thấy là how to change the language correct

sự giúp đỡ của bạn được nhiều đánh giá cao!

+0

Liên kết bạn cung cấp cung cấp cho bạn tất cả thông tin bạn cần để bắt đầu. –

Trả lời

3

Câu trả lời tôi đang tìm kiếm là thế này:

trong mẫu của tôi:

{% load i18n %}{% get_current_language as LANGUAGE_CODE %} 

{% ifequal LANGUAGE_CODE "en" %}      
<h2>{{object.title_EN }}</h2> 
{% else %} 
<h2>{{object.title_NO }}</h2> 
{% endifequal %} 
2

Có nhiều dự án của bên thứ ba khác nhau quản lý loại điều này. Here's one review.

2

Mã Google có thư viện cung cấp hỗ trợ cho multilingual content in Django models.

+0

Tôi hy vọng một người nào đó sẽ chỉ cho tôi một ví dụ hoàn chỉnh. Vẫn chưa biết cách thiết lập mẫu của tôi để sử dụng nội dung tiếng Na Uy khi chọn ngôn ngữ tiếng Na Uy và ngược lại cho nội dung tiếng Anh, trong thiết lập của tôi, tôi có thể làm như thế này: { % if language_code.en%} {{object.title_EN}} {% else%} {{object.title_NO}} ... ? – Anthrax00

1

Sau khi thử nghiệm một vài ứng dụng để dịch mô hình, tôi đã chọn django-modeltranlation.

Nếu bạn có một cái nhìn để so sánh này http://djangopackages.com/grids/g/model-translation/ bạn cũng sẽ thấy rằng nó là gói được sử dụng nhiều nhất, và nó không sử dụng một bảng thứ hai. Việc dịch các trường được dịch trong cùng một bảng có nghĩa là chúng ta sẽ không cần phải tham gia thêm.

1

Tôi đã vật lộn với điều này một lúc và kết thúc bằng cách viết một trình bao bọc xung quanh phương pháp "nhiều trường cho từng ngôn ngữ" mà bạn đã mô tả ở trên.

Tự động truy lục giá trị tương ứng với ngôn ngữ bạn đang ở (tương tự như gettext). Bạn có thể xem tại đây: https://github.com/zmathew/django-linguo

Các vấn đề liên quan