django的i18n是如何实现的

Posted on 2018-03-02 15:03  王将军之武库  阅读(174)  评论(0编辑  收藏  举报

在程序中出现 _的地方会调用gettext_lazy(django.utils.translation.py)

class LogEntry(models.Model):
    action_time = models.DateTimeField(
        _('action time'),
        default=timezone.now,
        editable=False,
    )
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        models.CASCADE,
        verbose_name=_('user'),

gettext_lazy = lazy(gettext, str) lazy函数返回一个懒对象,在调用from django.utils.encoding import force_text时,会根据setting文件决定是调用tran_real还是tran_null函数。

force_text函数会使懒对象即时翻译,从而达到国际化。

Copyright © 2024 王将军之武库
Powered by .NET 9.0 on Kubernetes