【问题标题】:Django dynamic localization not working as expected on mobile devicesDjango 动态本地化无法在移动设备上按预期工作
【发布时间】:2022-12-13 21:36:04
【问题描述】:

如果我在模板中动态填充我的语言列表(从设置的语言数组中获取),我对在移动设备上显示当前语言有疑问... 所以,这段代码可以正常工作:

<a href="#" id="language-en" class="pure-drawer-link{% if LANGUAGE_CODE == 'en' %} active{% endif %}"> EN </a>

但是,当我尝试这段代码时,我无法将 active 类添加到当前语言:

{% for lng in settings.LANGUAGES %}
                                    {% if not lng.0 == "ru" %}
                                        <a href="#" id="language-{{ lng.0 }}"
                                           class="pure-drawer-link{% if LANGUAGE_CODE == '{{ lng.0 }}' %} active{% endif %}">
                                            {{ lng.0|upper }}
                                        </a>
                                        {% if LANGUAGE_CODE == '{{ lng.0 }}' %} active {% else %} nonactive{% endif %} => this always return nonactive
                                    {% endif %}
                                {% endfor %}

谁能帮助理解为什么会这样?

编辑 1:

我在设置中的中间战:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'my_app.middleware.ExpirationMiddleware',
    'my_app.middleware.IPMiddleware',
    'my_app.middleware.TranslationMiddleware',
   ]

这是 i18 的:

USE_I18N = True

USE_L10N = False

USE_TZ = True

TIME_ZONE = 'Europe/Zurich'

LANGUAGE_CODE = 'en-US'

【问题讨论】:

    标签: django mobile django-templates


    【解决方案1】:
    1. 确保你已经配置好 Django 的中间件和设置 正确。为了使动态本地化工作,你需要 正确安装和配置 Django 的中间件。这个 包括 LocaleMiddleware,它负责设置 基于用户偏好的语言。此外,您需要 在 Django 中启用 USE_I18N 和 USE_L10N 设置 设置文件。

    2. 检查您的移动设备的标头和设置。一些手机
      设备,尤其是旧设备,可能无法发送正确的标头 或设置动态本地化工作。特别是,你 可能需要检查 Accept-Language 标头,该标头由 Django 确定用户的首选语言。如果这个标题 设置不正确,动态本地化可能无法正常工作 预期的。

    3. 在不同的移动设备和浏览器上进行测试。它可能是
      您遇到的问题特定于特定的手机
      设备或浏览器。要排除这种可能性,请尝试测试您的
      各种移动设备和浏览器上的 Django 应用,看看是否 问题仍然存在。

    4. 检查与其他中间件或设置的冲突或问题。在 在某些情况下,动态本地化可能无法按预期工作,如果有
      与您的其他中间件或设置有冲突或问题
      Django 应用程序。例如,如果您有多个中间件类 操纵 Accept-Language 标头,这可能会导致 冲突并导致动态本地化不起作用 适当地。值得检查任何潜在的冲突或 可能会影响您的应用中的动态本地化的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 2013-02-10
      • 2017-10-14
      • 2021-01-30
      • 1970-01-01
      相关资源
      最近更新 更多