Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 部署到服务器后Django区域设置不工作[已修复]_Python_Django_Apache_Locale_Django I18n - Fatal编程技术网

Python 部署到服务器后Django区域设置不工作[已修复]

Python 部署到服务器后Django区域设置不工作[已修复],python,django,apache,locale,django-i18n,Python,Django,Apache,Locale,Django I18n,当我在本地测试它时,翻译确实起作用,但是当我将它部署到服务器上时,它就不起作用了。 有些单词确实被翻译了,但不是来自我的语言环境,而是django的默认翻译 在settings.py中: MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.local

当我在本地测试它时,翻译确实起作用,但是当我将它部署到服务器上时,它就不起作用了。 有些单词确实被翻译了,但不是来自我的语言环境,而是django的默认翻译

在settings.py中:

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

LANGUAGE_CODE = 'en-us'
# LANGUAGE_CODE = 'zh-hans'  # i also tried just putting language code as zh-hans but still ntg gets translated.

TIME_ZONE = 'Asia/Kuala_Lumpur'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

LANGUAGES = [
    ('en', 'English'),
    ('zh-hans', '简体中文 zh-hans'),
]

在URL.py中

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django_email_verification import urls as mail_urls
from rest_framework.authtoken import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('email/', include(mail_urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

urlpatterns += i18n_patterns(
    path('i18n/', include('django.conf.urls.i18n')),
    path('', include('main.urls')),
    prefix_default_language=False,
)

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


对于LOCALE\u路径它是正确的,因为我将
print(LOCALE\u路径)
放在设置中,它为我的LOCALE“home/username/django\u project/LOCALE”提供了正确的路径

我确实做了
python manage.py makemessages-l zh_hans
以及
python manage.py compilemessages
重新启动了我的服务器,但还是一样

顺便说一句,我正在使用AWS ubuntu和apache2。(不是apache问题,因为我在安装apache之前就尝试了
python manage.py runserver 0.0.0.0:8000
,它仍然是一样的)

我的开发组件是windows,我的服务器是ubuntu(不确定它会有什么帮助,但是的)

根本没有错误,只是没有翻译


有什么问题吗?有人能帮我吗?

Django很可能无法正确读取您的翻译文件

您的区域设置文件夹中的文件夹名是什么? Ubuntu似乎更喜欢大写的区域名称,例如
zh_Hans
zh_Hans
。尝试更改文件夹名称,以便Ubuntu能够正确读取

请注意,当您更改文件夹名称时,应该先将其更改为其他名称,因为有时候Ubuntu会认为从小写改为大写并不能真正改变任何内容。这样做一个中间步骤:

cd locales
mv zh_hans/ zh/
mv zh/ zh_Hans/
其他调试方法有什么问题 如果检测到正确的当前语言代码,还可以使用
django.utils.translation.get_language()
进行打印。因此,如果上面的一行打印了
zh hans
,但您仍然没有看到您的翻译被加载,那么可能与区域设置路径或Django未加载的文件有关


您还可以登录到管理员站点,查看是否加载了默认翻译。

您是否已将
i18n\u模式添加到URL中?您是如何更改语言的?是的,当我更改语言时,它会将我重定向到新的url“”我在上面添加了我的url.py,您的
语言设置是什么?我刚刚把一个网站翻译成日语&它真正需要的是
语言
i18n_模式
LocaleMiddleware
将有助于使用人们的请求,但我认为这不是必需的。是的,它可以在本地主机上进行开发,但不能在服务器上运行,所以我不知道为什么它不起作用,我已经在OMG上添加了我的语言,非常感谢,我已经尝试了几天来解决这个问题!!!!如果有人有同样的问题,这就是解决方案