NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.44k stars 13.65k forks source link

pretix, nixos/pretix: Not generating all languages #297708

Closed e1mo closed 6 months ago

e1mo commented 6 months ago

Describe the bug

The pretix package does not contain generated locales for de-informal, causing internal server errors when trying to select this language (concretely when clients try to access jsi18n/de-informal/djangojs.js).

Steps To Reproduce

Steps to reproduce the behavior:

  1. Enable the pretix module with services.pretix.settings.languages.enabled = "en,de,de-informal"
  2. Create an organizer and select german-informal in the localisation settings.
  3. Open the organiser profile, be greeted by an "Internal Server Error" page.

Expected behavior

Be present with the actual requested page instead of an http/500 one.

Additional context

The E-Mail sent out to the admin contains more details: https://gist.github.com/e1mo/3ff19a204e3f9342818dd92de0fb8c28

This seems to be related to the js18n of django. Looking in ${pkgs.pretix}/lib/python3.*/site-packages/pretix/static.dist/jsi18n/ the requested de-informal/ is missing.

Notify maintainers

@mweinelt

Metadata

Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

[e1mo@hyperion:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.1.39, NixOS, 24.05 (Uakari), 24.05pre-git`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.2`
 - nixpkgs: `/nix/store/zaza7mgggz4m5h6z18kajabf4wciaj47-source`

Add a :+1: reaction to issues you find important.

mweinelt commented 6 months ago

The pypi wheel is missing it as well, but the hosted version does have it. :thinking:

mweinelt commented 6 months ago

The locale is seen by compilemessages, but not by compilejsi18n, which originates in https://github.com/zyegfryed/django-statici18n. Happens to pl-informal as well.

# compilemessages
pretix> processing file django.po in /build/source/src/pretix/locale/uk/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/uk/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/gl/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/gl/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ar/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ar/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/zh_Hant/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/zh_Hant/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ro/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ro/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ja/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ja/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/nan/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/nan/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/cy/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/cy/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/pt/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/pt/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/zh_Hans/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/zh_Hans/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/da/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/da/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/sl/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/sl/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/el/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/el/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/si/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/si/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/cs/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/cs/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/nb_NO/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/nb_NO/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/th/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/th/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ko/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ko/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ca/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ca/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/lt/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/lt/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/fr/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/fr/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ang/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ang/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/id/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/id/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/tr/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/tr/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/enm/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/enm/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/de_Informal/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/de_Informal/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/sv/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/sv/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/hr/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/hr/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/pl/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/pl/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/es/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/es/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/hu/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/hu/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/pt_PT/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/pt_PT/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/nl/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/nl/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/pl_Informal/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/pl_Informal/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/it/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/it/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/nl_Informal/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/nl_Informal/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/de/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/de/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/he/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/he/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/ru/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/ru/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/lv/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/lv/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/vi/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/vi/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/pt_BR/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/pt_BR/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/locale/fi/LC_MESSAGES
pretix> processing file djangojs.po in /build/source/src/pretix/locale/fi/LC_MESSAGES
pretix> processing file django.po in /build/source/src/pretix/helpers/locale/de_Informal/LC_MESSAGES
# compil;ejsi18n
pretix> processing language af
pretix> processing language ar
pretix> processing language ar-dz
pretix> processing language ast
pretix> processing language az
pretix> processing language bg
pretix> processing language be
pretix> processing language bn
pretix> processing language br
pretix> processing language bs
pretix> processing language ca
pretix> processing language ckb
pretix> processing language cs
pretix> processing language cy
pretix> processing language da
pretix> processing language de
pretix> processing language dsb
pretix> processing language el
pretix> processing language en
pretix> processing language en-au
pretix> processing language en-gb
pretix> processing language eo
pretix> processing language es
pretix> processing language es-ar
pretix> processing language es-co
pretix> processing language es-mx
pretix> processing language es-ni
pretix> processing language es-ve
pretix> processing language et
pretix> processing language eu
pretix> processing language fa
pretix> processing language fi
pretix> processing language fr
pretix> processing language fy
pretix> processing language ga
pretix> processing language gd
pretix> processing language gl
pretix> processing language he
pretix> processing language hi
pretix> processing language hr
pretix> processing language hsb
pretix> processing language hu
pretix> processing language hy
pretix> processing language ia
pretix> processing language id
pretix> processing language ig
pretix> processing language io
pretix> processing language is
pretix> processing language it
pretix> processing language ja
pretix> processing language ka
pretix> processing language kab
pretix> processing language kk
pretix> processing language km
pretix> processing language kn
pretix> processing language ko
pretix> processing language ky
pretix> processing language lb
pretix> processing language lt
pretix> processing language lv
pretix> processing language mk
pretix> processing language ml
pretix> processing language mn
pretix> processing language mr
pretix> processing language ms
pretix> processing language my
pretix> processing language nb
pretix> processing language ne
pretix> processing language nl
pretix> processing language nn
pretix> processing language os
pretix> processing language pa
pretix> processing language pl
pretix> processing language pt
pretix> processing language pt-br
pretix> processing language ro
pretix> processing language ru
pretix> processing language sk
pretix> processing language sl
pretix> processing language sq
pretix> processing language sr
pretix> processing language sr-latn
pretix> processing language sv
pretix> processing language sw
pretix> processing language ta
pretix> processing language te
pretix> processing language tg
pretix> processing language th
pretix> processing language tk
pretix> processing language tr
pretix> processing language tt
pretix> processing language udm
pretix> processing language uk
pretix> processing language ur
pretix> processing language uz
pretix> processing language vi
pretix> processing language zh-hans
pretix> processing language zh-hant
e1mo commented 6 months ago

It's also noteworthy that compilejsi18n is compiling e.g. af, which is not in the output of compilemessages :thinking:

mweinelt commented 6 months ago

This list seems more reasonable, no? :laughing:

pretix> processing language ar
pretix> processing language cs
pretix> processing language da
pretix> processing language de
pretix> processing language de-informal
pretix> processing language el
pretix> processing language en
pretix> processing language es
pretix> processing language fi
pretix> processing language fr
pretix> processing language gl
pretix> processing language id
pretix> processing language it
pretix> processing language lv
pretix> processing language nb-no
pretix> processing language nl
pretix> processing language nl-informal
pretix> processing language pl
pretix> processing language pt-br
pretix> processing language pt-pt
pretix> processing language ro
pretix> processing language ru
pretix> processing language tr
pretix> processing language uk
pretix> processing language zh-hans
pretix> processing language zh-hant
e1mo commented 6 months ago

I do have the feeling, that this happens because there is not pretix configuration at build time.

From checking just a couple of languages, the ones showing up in compilejsi18n appear to match the ones in djangos global_settings.py

And whilst pretix has it's own list of available languages, they do not set defaults for LANGUAGES. To my understanding (based on heavy use of grep ;)), pretix only sets LANGUAGE based on the user-provided settings (see settings.py).

mweinelt commented 6 months ago

I do have the feeling, that this happens because there is not pretix configuration at build time.

Yep, that's why. I'm preparing a patch.

e1mo commented 6 months ago

This list seems more reasonable, no? 😆

Indeed, that looks purrfect!