【问题标题】:DjangoCMS show menu on wrong languageDjangoCMS 以错误的语言显示菜单
【发布时间】:2018-05-15 16:57:38
【问题描述】:

我有网站https://www.mobydisc.de/。它有 DE 和 EN 版本。当我从浏览器访问该站点时,该站点的所有内容都在DE

当我使用https://www.google.com/webmasters/tools/googlebot-fetch-details 查看网站时,内容位于DE,但菜单位于EN

我该如何解决?

设置:

LANGUAGE_CODE = 'de'
TIME_ZONE = 'Europe/Berlin'
USE_I18N = True
USE_L10N = True
USE_TZ = True
CMS_LANGUAGES = {
1: [
    {
        'code': 'de',
        'name': gettext('Deutsch'),
        'fallbacks': ['en'],
        'public': True,
    },
    {
        'code': 'en',
        'name': gettext('English'),
        'fallbacks': ['de'],
        'public': True,
        'hide_untranslated': True,
        'redirect_on_fallback':False,
    },
],
'default': {
    'fallbacks': ['de'],
    'redirect_on_fallback':True,
    'public': True,
    'hide_untranslated': False,
    }
}
LANGUAGES = [
    ('de', 'Deutsch'),
    ('en', 'English'),
]

过滤器:

@register.filter(name="get_menu_title_without_mega")
    def get_menu_title_without_mega(text):
        if megamenu(text):
            # print("mega remove")
            regexp  = re.compile("[ ]+mega[0-9]+$", re.MULTILINE)
            # print(text,regexp.sub("",text))
            return regexp.sub("",text)
        else:
            return text`

Image example

【问题讨论】:

  • 你能贴出模板中呈现菜单的部分吗? (包括菜单标签使用的任何自定义菜单模板)
  • 那么get_menu_title_without_mega 是做什么的?这是在不使用gettext 的情况下返回字符串吗?
  • @markwalker_在问题处添加get_menu_title_without_mega的代码

标签: django django-cms


【解决方案1】:

您的设置文件中是否同时使用 LANGUAGES 声明了“de”和“en”。您只在 LANGUAGE_CODE 中显示“de”,而没有在 LANGUAGES 中显示任何我怀疑也可能只是声明“de”的内容。

LANGUAGES = [
    ('de', _('German')),
    ('en', _('English')),
]

【讨论】:

  • 是的,我有。将它们添加到我的问题中。
【解决方案2】:

这对我有帮助 https://www.djangosnippets.org/snippets/218/

我需要做的就是忽略 HTTP Accept-Language 标头

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多