在 Django 中设置或更改 DEFAULT_LANGUAGE

问题描述 投票:0回答:4

我希望我的网站的默认语言是波斯语,而不是英语! 并且 DEFAULT_LANGUAGE 不适合我!

我的settings.py 文件的一部分:

LANGUAGES = (
    ('fa','Persian'),
    ('en','English'),
)

DEFAULT_LANGUAGE = 1

LANGUAGE_CODE = 'fa'

TIME_ZONE = 'Asia/Tehran'

USE_I18N = True

USE_L10N = True

USE_TZ = True

我也读过这些,但它们没有帮助:

根据用户动态设置或更改默认语言 - Django

Django 如何在 i18n_patterns 中设置默认语言?

Django:无法更改默认语言

Django:默认语言 i18n

请帮助我。谢谢!

python django internationalization
4个回答
3
投票

在settings.py中你可能有这个中间件,它使用默认语言作为你的浏览器语言。

'django.middleware.locale.LocaleMiddleware'

1
投票

只需更改此: LANGUAGE_CODE = 'fa-ir'

蟒蛇
姜戈

语言代码列表


0
投票
  • 因为设置中的这个
    'django.middleware.locale.LocaleMiddleware'
    中间件将默认语言作为浏览器的语言,正如@Alasgar提到的那样。
  • 我们可以通过创建新的轻量级中间件并将其放在该中间件之前来解决问题,这样我们就不会丢失 LocaleMiddleware 为我们提供的任何功能。
  1. 让我们创建新的中间件文件如下:
  • 在项目文件夹中创建包文件夹,将其命名为“middleware”,然后创建 languages.py 文件。它看起来像这样
- {YOUR_APP}/middleware/
  - __init__.py
  - languages.py
  1. language.py
    内放入以下代码:

def SetDefaultLangMiddleware(get_response):

    def middleware(request):
        # Code to be executed for each request before processing it
        
        if not request.COOKIES.get('django_language'): # Language not selected by the user ?
            # Set your default language code here
            request.COOKIES['django_language'] = 'ar'

        response = get_response(request)
        # If you want to process anycode after the view is called
        
        return response

    return middleware

  1. 在 settings.py 中将新的中间件放在
    'django.middleware.locale.LocaleMiddleware'
    :
  2. 之前

Like this


-1
投票

这是最快、最简单的解决方案。就我而言,Django==“3.1” https://github.com/yifaneye/django-default-language

© www.soinside.com 2019 - 2024. All rights reserved.