在開發用於多種語言的應用程序時,我發現使用本地化嘗試構建特定於應用程序的特定本地化庫會帶來真正的好處。我正在開發一個有16種語言的網站,每種語言在各個地方都會有不同的圖像,並且每個網頁內容都有全文翻譯,每種語言都位於不同的網址(www.example.com/en /等)。 Django的國際化框架似乎非常神奇而且很棘手。我的想法是做一些基本的東西,如:關於Django國際化框架的問題
class Language(models.Model):
name = models.CharField(max_length=50)
code = models.CharField(max_length=2) # (e.g. "FR")
class ContentSection(models.Model):
page = models.ForeignKey('mysite.Page')
name = models.CharField(max_length=50) # (e.g. ("main body text")
content = models.TextField(max_length=5000)
class Meta:
unique_together = (('name', 'page'),)
class ContentTranslation(models.Model):
content_section = models.ForeignKey(ContentSection)
language = models.ForeignKey(Language)
content = models.TextField(max_length=5000)
class Meta:
unique_together = (('content_section', 'language'),)
我會用中間件來設置基於第一URL段目前的語言,在我的意見我會拉一個給定頁面中的內容與觀點是這樣的:
# In views.view_page
left_content = ContentSection.objects.filter(page=current_page, name='left column text')
if not request.language.code == 'EN':
left_content = ContentTranslation.objects.get(content_section=left_content, language=request.language)
當然,在生產中我可能會創建一個模板標記,可以通過名字內容(用正確的語言),而不是在視圖中明確拉動每個內容區域。
這樣做看起來很荒謬,而不是使用i18n嗎?我是否因國際化而錯失了更大的局面?
(記住:該網站將在其他語言的用戶進行瀏覽,但所有管理的東西,包括插入翻譯,將在美國完成)
我的問題是真的,爲什麼我應該使用i18n而不是使用這種方法? – orokusaki 2010-11-05 18:34:34
你不應該。 i18n框架用於屬於系統的文本,而不是內容本身。例如錯誤消息,部分頁眉,頁腳,系統消息給用戶等。您還可以使用它來格式化日期,日期時間,數字,貨幣等。 – knutin 2010-11-05 18:39:30
好的,我從我對文檔的簡短閱讀中猜到,我認爲l10n是爲了這個,但我想l10n更多的是界面語言功能,比如模型字段,表單等等。我有一些閱讀要做。 – orokusaki 2010-11-05 18:44:26