【问题标题】:Django-all-auth: language translation doesn't workDjango-all-auth:语言翻译不起作用
【发布时间】:2016-11-22 09:48:31
【问题描述】:

我是韩国人,在我的 Django 项目中使用 django-all-auth

我检查了django-all-auth中有韩文.po文件。

但是所有的表达都是英语,不是韩语。

我只是跟着doc中的安装部分和配置部分。

这是我的settings.py

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'

USE_I18N = True

USE_L10N = True

USE_TZ = True

我错过了什么吗?

【问题讨论】:

标签: django django-allauth


【解决方案1】:

您需要激活国际化中间件:

在你的 settings.py 集中:

MIDDLEWARE = {...,"django.middleware.locale.LocaleMiddleware",...}

Doc中所说

确保您已为您的项目激活翻译(最快 方法是检查 MIDDLEWARE 是否包含 django.middleware.locale.LocaleMiddleware)。如果您还没有,请参阅 Django 如何发现语言偏好。

【讨论】:

    【解决方案2】:

    现在您的页面已配置为路由到所需的国际化,您现在需要自己提供本地化。它们不会被自动翻译。你需要自己处理。 为此,您必须使用标记需要翻译的元素

    from django.utils.translation import ugettext as _
    

    现在使用ugettext as _按以下方式标记您需要翻译的文本:-

    class PollPluginPublisher(CMSPluginBase):
        model = PollPluginModel  # model where plugin data are saved
        module = _("Polls")
        name = _("Poll Plugin")  # name of the plugin in the interface
    

    现在元素被标记为在我们的例子中翻译(“投票”)和(“投票插件”)。 处理完这个之后,你可以在你的根目录中运行以下命令:-

    django-admin makemessages -l de
    

    将最后一个“de”替换为您的语言区域名称。该命令的作用是创建 po 文件,该文件将仅存储需要翻译的元素。确保您的LOCALE_PATH 设置正确。

    完成此操作后,您可以使用以下 django-packages 进行翻译:-

    1) django-rosetta :- https://django-rosetta.readthedocs.io/en/latest/
    
    2) django-modeltranslation:- http://django-modeltranslation.readthedocs.io/en/latest/
    

    有关本地化的进一步参考,您可以查看:-

    https://docs.djangoproject.com/en/1.10/topics/i18n/translation/#localization-how-to-create-language-files
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 2015-06-23
      • 2014-07-05
      • 2020-10-19
      • 1970-01-01
      相关资源
      最近更新 更多