Python 部署到服务器后Django区域设置不工作[已修复]
当我在本地测试它时,翻译确实起作用,但是当我将它部署到服务器上时,它就不起作用了。 有些单词确实被翻译了,但不是来自我的语言环境,而是django的默认翻译 在settings.py中: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
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上添加了我的语言,非常感谢,我已经尝试了几天来解决这个问题!!!!如果有人有同样的问题,这就是解决方案