Интернационализация/перевод Django gettext не работает на производстве в облаке, запущенном с помощью docker
Я работаю над сайтом, используя Django + gettext + docker и размещая его на облачном хостинге, мой dev - среда windows 11. (Я прошел через многое, пока мне не удалось развернуть мою сборку). Но что-то забавное произошло, когда я пытаюсь настроить мультиязычную поддержку. Мой конфиг с китайским переводом работает на локальной сборке, но не работает на облачном хостинге google.
Я использую Django==5.0.2 и python-gettext==5.0. Я следовал некоторым учебникам Youtube и сделал свою локализацию. Работает отлично на моем локальном, но не работает в облачном google run. Я использую
# 5. Localization step to make messages
- name: gcr.io/google-appengine/exec-wrapper
args:
- "-i"
- "$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA"
- "-s"
- "${PROJECT_ID}:${_DEPLOY_REGION}:${_DB_INSTANCE}"
- "-e"
- "SETTINGS_NAME=${_SECRET_SETTINGS_NAME}"
- "-e"
- "DJANGO_SETTINGS_MODULE=lt3aelaw.settings.production"
- "--"
- "python"
- "manage.py"
- "makemessages"
- "-l"
- "zh_HAns"
id: Localization make messages
# 5.1 Localization step to make messages for de
- name: gcr.io/google-appengine/exec-wrapper
args:
- "-i"
- "$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA"
- "-s"
- "${PROJECT_ID}:${_DEPLOY_REGION}:${_DB_INSTANCE}"
- "-e"
- "SETTINGS_NAME=${_SECRET_SETTINGS_NAME}"
- "-e"
- "DJANGO_SETTINGS_MODULE=lt3aelaw.settings.production"
- "--"
- "python"
- "manage.py"
- "makemessages"
- "-l"
- "de"
id: Localization make messages for de
# 6. Localization step to compile messages
- name: gcr.io/google-appengine/exec-wrapper
args:
- "-i"
- "$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA"
- "-s"
- "${PROJECT_ID}:${_DEPLOY_REGION}:${_DB_INSTANCE}"
- "-e"
- "SETTINGS_NAME=${_SECRET_SETTINGS_NAME}"
- "-e"
- "DJANGO_SETTINGS_MODULE=lt3aelaw.settings.production"
- "--"
- "python"
- "manage.py"
- "compilemessages"
id: Localization compile messages
Я знаю, что код языка для китайского должен быть таким, как показано ниже: Упрощенный китайский: http://your-domain.com/zh-Hans/. Традиционный китайский: http://your-domain.com/zh-Hant/
Я также знаю, что есть некоторые ленивые/нечеткие проблемы, поэтому я использую такой код:
from django.utils.translation import activate, gettext as _
def index(request):
showcaseHeader = _('Please contact us to get a free quote.')
return render(request, 'pages/index.html', {'showcaseHeader':showcaseHeader})
Я также знаю, что существует некоторая проблема с путями к папкам, связанная с нижним и верхним регистром для zh_HAns, как указано ниже: gettext translation not working on production system
Вот в чем сложность: На моем локальном компьютере все работает нормально: http://127.0.0.1:8000/zh-hans/ имеет все китайские иероглифы, которые мне нужны. Однако на моем облаке Google https://myproject.run.app/zh-hans/ выдает мне страницу, на которой только "Home" переведено на "首页" (в файле django.po у меня "Home" переведено на "主页"), а все остальное на английском. Самое смешное, что я поместил те же самые файлы django.po и django.mo в раздел de (немецкий) и все отображается просто находит. Так что в итоге у меня получилось https://myproject.run.app/de/ для размещения моих китайских переводов. Я не могу быть единственным, у кого такая проблема, верно?