翻译 Django 数据库值的最佳/推荐方式

Posted

技术标签:

【中文标题】翻译 Django 数据库值的最佳/推荐方式【英文标题】:The best/recommended way to translate Django database values 【发布时间】:2011-01-02 10:12:44 【问题描述】:

在国际化我的 Django 应用程序时,我试图找出翻译实际数据库值(文本字符串,而不是日期格式或任何复杂的东西)的最佳方法。我能想到的最合乎逻辑的方法是:

为每种语言保存一个数据库(例如description_endescription_dedescription_fr、...)或 每种语言都有一个不同的数据库(例如schema_enschema_frschema_de、...)。

这些是最好的选择,还是我还缺少其他东西?谢谢。

【问题讨论】:

另外,这是一个非常小而简单的应用程序,可能只有 5 个或更少的小桌子。 是否每个安装都应该有一种单一语言,而不是每个用户都有一个语言设置? 该应用支持按用户选择语言,因此它必须在单个实例中支持所有实现的翻译 重复***.com/questions/1984327/… 【参考方案1】:

我正在阅读我的 django 扩展,并找到了 django-modeltranslation 插件。它似乎完全按照您的意愿行事。

【讨论】:

第一眼看起来不错,我得试试看 - 谢谢! 我来晚了,为数据库翻译提出新的解决方案,yawd-translations - github.com/yawd/yawd-translations。它允许通过管理界面(在运行时)管理语言,并实现管理内联以轻松管理翻译。由于我正在为 yawd 开发,因此我使用评论而不是新答案,以免被指责为自我推销:)【参考方案2】:

我还发现了这个small project,其目的是将本地化字符串同步到已注册模型字段的标准消息文件中。

例子:

import vinaigrette
vinaigrette.register(YourModel, ['name', 'description'])

标准命令

$ manage.py makemessages

将为注册字段中找到的每个不同值维护消息。

我还没有机会尝试。 但这对我来说似乎是从 db 转换数据的最简单方法。

【讨论】:

这意味着每次您在数据库中添加新记录时,如果有新条目,您可能必须重新运行 makemessages 并检查 po 文件......只是一个警告。但无论如何,这就是我一直在寻找的,它比 django-modeltranslation 更轻,后者在需要为每种语言翻译的表中添加一列......

以上是关于翻译 Django 数据库值的最佳/推荐方式的主要内容,如果未能解决你的问题,请参考以下文章

Django 模板:翻译带有 HTML 的文本块的最佳实践

在 Django 项目中声明附加数据和模块的最佳方式

DRF:提供动态默认字段值的最佳方式?

【翻译】Prometheus最佳实践 Summary和Histogram

部署 django 应用程序以加快加载速度的最佳方式

以百万英镑显示 Y 轴值的最佳方式