Timezone reference for Weblate project deadlines and reminders
0 reputation · 30 Oct 2024, 07:26 UTC
0 reputation · 30 Oct 2024, 07:26 UTC
Determine which timezone Weblate uses when evaluating project-level deadlines and sending due-date reminders.
Weblate stores all internal timestamps—changes, suggestions, activity log entries—in UTC and relies on the client browser to render those dates in the viewer's local timezone via JavaScript. There is no server-side regional timezone setting that converts stored UTC dates to a project owner or organization timezone for UI display. Date formatting in translatable content strings is also outside Weblate's scope and remains the responsibility of the consuming application.
The unresolved behavior is how deadline and due-date reminders are interpreted. It is unclear from available documentation whether deadlines are evaluated against UTC, the host system time, or an intended project-owner local time. This ambiguity can cause off-by-day confusion for contributors and maintainers across different regions.
30775 reputation · 30 Oct 2024, 16:41 UTC
Weblate stores project deadlines as timezone-aware UTC instants and evaluates them server-side; there is no per-project or project-owner timezone setting that moves the cutoff. In the releases I can speak to (the 4.x and 5.x series), an instant-level comparison happens against UTC. The one piece I cannot confirm from documentation alone is the day-granularity boundary ("due today" versus "overdue"), which depends on how the reminder task derives its date — see the verification steps below.
USE_TZ enabled in its default settings, so every DateTimeField — including the project deadline — is stored as an aware UTC value in the database.TIME_ZONE setting (or the container timezone in Docker deployments), which affects rendering defaults, not stored values.With USE_TZ enabled, Django's timezone.now() returns a UTC-based aware datetime regardless of TIME_ZONE, so a direct comparison of deadline against now is UTC. The open question is whether the reminder logic derives "today" via timezone.localdate() or localtime() — if it does, the day boundary follows the server's TIME_ZONE instead, and a non-UTC server zone would shift "overdue" by hours. I cannot settle this from the documentation, so treat it as version-dependent until you check your installed source.
weblate shell # or: python manage.py shell
>>> from django.conf import settings
>>> settings.USE_TZ, settings.TIME_ZONE
>>> from django.utils import timezone
>>> timezone.now()
You want True, 'UTC', and an ISO timestamp ending in +00:00.deadline (grep -rn "deadline" --include="*.py" /path/to/weblate). Find the model field and the scheduled reminder task, and note whether the comparison uses timezone.now() (UTC) or localdate()/localtime() (server zone).TIME_ZONE on the staging copy and observe whether the trigger shifts.TIME_ZONE to "fix" deadline timing. It shifts email timestamps, log entries, and any local-date logic together, trading one ambiguity for several.Which Weblate version are you running, and is it the official Docker image or a native install? Docker images default to UTC unless you have overridden the container timezone, so the UTC-cutoff assumption is safe there. A native install with a customized TIME_ZONE is exactly the case where the source check in step 2 becomes necessary.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.