从数据库中的数据翻译
Translation from data in database
我在我的 Django 应用程序中实现了一个日志系统,这个系统对于任何用户的每一个动作都会将信息保存在数据库中。这是模型:
class Log(models.Model):
user = models.ForeignKey(to=User, on_delete=models.PROTECT)
log = models.CharField(max_length=255)
type = models.CharField(max_length=50)
date = models.DateTimeField(auto_now_add=True)
company = models.ForeignKey(to=Company, on_delete=models.PROTECT)
我的观点是关于日志字段的翻译。例如我的语言是英语,它会在数据库中保存“确实创建了一个新客户”,但是如果我用法语更改语言,我显然会再次以英语获得。
同样,如果法国人创建日志,我将有一些法语日志,其他日志则为英语。
我的问题是这个日志字段有数百种不同的可能性。
Django 是否可以像使用 {% translate %} 标签那样在模板中翻译来自数据库的数据?
我在想在翻译文件中有这数百种可能性,然后 Django 直接在模板中翻译它?
权限名称也有同样的问题。用户可以将权限授予其他用户,但这些权限名称是英文的。
感谢您的帮助
是的 - Django 有一个内置的方法用于此 .gettext()
,如文档中所述:
https://docs.djangoproject.com/en/3.1/topics/i18n/translation/
这会将字符串翻译成最终用户的语言。您可以在模板或模型中使用它。
要在您的模板中使用它:
<!-- load i18n -->
{% load i18n %}
<!-- translate text -->
<title>{% translate "This is the title." %}</title>
<!-- translate string variable passed from context -->
<title>{% translate myvar %}</title>
在模板中,translate
在底层字符串上调用 .gettext()
。
希望对您有所帮助 ;)
额外信息:
Django 的 LocaleMiddleware
将尝试检测它正在翻译的语言(通过各种技术,您可以在文档 link 上阅读)。
但是,如果中间件无法检测到最终用户需要哪种语言,它将使用 settings.py
中 LANGUAGE_CODE
变量中指定的语言。这是 Django 将翻译成的默认语言。
我在我的 Django 应用程序中实现了一个日志系统,这个系统对于任何用户的每一个动作都会将信息保存在数据库中。这是模型:
class Log(models.Model):
user = models.ForeignKey(to=User, on_delete=models.PROTECT)
log = models.CharField(max_length=255)
type = models.CharField(max_length=50)
date = models.DateTimeField(auto_now_add=True)
company = models.ForeignKey(to=Company, on_delete=models.PROTECT)
我的观点是关于日志字段的翻译。例如我的语言是英语,它会在数据库中保存“确实创建了一个新客户”,但是如果我用法语更改语言,我显然会再次以英语获得。 同样,如果法国人创建日志,我将有一些法语日志,其他日志则为英语。 我的问题是这个日志字段有数百种不同的可能性。
Django 是否可以像使用 {% translate %} 标签那样在模板中翻译来自数据库的数据?
我在想在翻译文件中有这数百种可能性,然后 Django 直接在模板中翻译它?
权限名称也有同样的问题。用户可以将权限授予其他用户,但这些权限名称是英文的。
感谢您的帮助
是的 - Django 有一个内置的方法用于此 .gettext()
,如文档中所述:
https://docs.djangoproject.com/en/3.1/topics/i18n/translation/
这会将字符串翻译成最终用户的语言。您可以在模板或模型中使用它。
要在您的模板中使用它:
<!-- load i18n -->
{% load i18n %}
<!-- translate text -->
<title>{% translate "This is the title." %}</title>
<!-- translate string variable passed from context -->
<title>{% translate myvar %}</title>
在模板中,translate
在底层字符串上调用 .gettext()
。
希望对您有所帮助 ;)
额外信息:
Django 的 LocaleMiddleware
将尝试检测它正在翻译的语言(通过各种技术,您可以在文档 link 上阅读)。
但是,如果中间件无法检测到最终用户需要哪种语言,它将使用 settings.py
中 LANGUAGE_CODE
变量中指定的语言。这是 Django 将翻译成的默认语言。