如何本地化Django应用程序的内容

时间:2008-12-14 18:48:50

标签: python django localization internationalization

嘿,我目前正在为我的学习开发一个django应用程序,并且到了l18n。本地化网站本身非常简单,但现在我必须允许用户翻译应用程序的动态内容。 用户可以在数据库中保存“产品”并为其命名和描述,但由于整个网站应该进行本地化,我必须提供一种将这些名称和描述翻译给用户的方法。

django有一种自然的方式吗?或者我必须将其作为应用程序的一部分来实现(通过在数据模型中表示翻译)

谢谢,Janosch

8 个答案:

答案 0 :(得分:10)

我建议您查看django-multilingual。它是第三方应用程序,可让您在模型上定义翻译字段。

当然,你仍然需要输入实际的翻译,但是它们是透明地存储在数据库中(而不是静态的PO文件),这是我相信你要问的。

答案 1 :(得分:5)

我使用django-multilingual来定位内容,使用django-localeurl来选择基于网址的语言(例如mypage / en /)。

您可以在JewishKrakow.net页面上看到multilingua和localeurl的工作原理。

答案 2 :(得分:4)

答案 3 :(得分:1)

“我必须提供一种将这些名称和描述翻译给用户的方法。”

“django有一种自然的方式来做这件事吗?”

您是否在询问Django是否可以从语言翻译成语言?你问的问题是http://translate.google.com/吗?

我不认为Django可以将用户输入翻译成另一种语言。

如果您要为用户进行翻译,则必须将其作为数据模型的一部分。

Django的i18n过滤器允许您拥有翻译字符串表。 documentation说明了这一点。

  1. 在Python代码和模板中嵌入翻译字符串。
  2. 以您想要支持的任何语言获取这些字符串的翻译。 您可以通过聘请翻译或自己了解大量语言来手动执行此操作。
  3. 在Django设置中激活区域设置中间件。

答案 4 :(得分:0)

还在寻找内容本地化插件,或者如何编写它。 可以添加到列表django-i18n-model

答案 5 :(得分:0)

或试试这个:

http://packages.python.org/django-easymode/i18n/index.html

它与您通常的django模型非常接近,只需在模型上方添加1个装饰器即可。它具有对翻译字段的管理支持,包括内联和通用内联。几乎任何你可以用常规模型和管理类做的事情都可以用国际化的版本。

答案 6 :(得分:0)

我认为你应该分两步操作:

  1. 获取翻译
  2. 显示已翻译的字符串
  3. 第一步,你应该告诉Django要翻译用户插入的字符串。我认为没有本地方法可以这样做。也许你可以从数据库中提取字符串,将它们放在特定于语言环境的文件中,对它们运行'makemessages',获取django.po文件并进行翻译。

    其次,使用ugettext在Web应用程序上显示这些字符串。

    希望这可以帮助那些遇到同样问题的人。

答案 7 :(得分:0)

这取决于谁将提供翻译。如果您想为翻译提供Web界面,那么您需要自己开发,并代表数据库中的翻译。

如果翻译网站的翻译人员也会翻译数据,您可以为他们提供他们用于网站的相同模型(可能是gettext),然后您也可以使用gettext来获取此内容。