【发布时间】:2010-11-05 18:13:42
【问题描述】:
在开发用于多种语言的应用程序时,我发现使用本地化比尝试构建一些特定于您的应用程序的临时本地化库具有真正的好处。我正在开发一个有 16 种语言的网站,每种语言在不同的地方都有不同的图像,以及每个页面内容的全文翻译,每种语言位于不同的 URL(www.example.com/en /, ETC)。 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 来做这件事看起来很荒谬吗?我是否错过了国际化的大局?
(请记住:该网站将由其他语言的用户浏览,但所有管理工作,包括插入翻译,都将在美国完成)
【问题讨论】:
标签: django localization internationalization