Skip to content

fix: read the date locale when formatting instead of at import time - #605

Open
tju-yxq wants to merge 1 commit into
oss-compass:mainfrom
tju-yxq:fix/time-locale-at-call-time
Open

tju-yxq wants to merge 1 commit into
oss-compass:mainfrom
tju-yxq:fix/time-locale-at-call-time

Conversation

@tju-yxq

@tju-yxq tju-yxq commented Oct 20, 2026

Copy link
Copy Markdown

Motivation

const local = getLocale();
const languages = { en: enGB, zh: zhCN };
...
formatDistanceToNow(p, { locale: languages[local] });

getLocale() runs once, when the module is first imported, and the result is frozen for the lifetime
of the bundle. Switching the UI language afterwards leaves every "2 months ago" style label in the
previous language until the page is reloaded.

Change

Resolve the locale through a currentLocale() helper at call time. Both formatToNow and
formatToNowStrict use it; the formatting itself is untouched.

Verification

The new test mocks getLocale, formats once with en, switches the mock to zh and formats again
in the same module instance:

# test only
● follows the locale that is active at call time
Tests:       1 failed, 3 passed, 4 total

# with the fix
Tests:       4 passed, 4 total

`const local = getLocale()` runs once, when the module is first imported, and the
result is frozen for the lifetime of the bundle. Switching the UI language
afterwards leaves every "2 months ago" style label in the previous language until
the page is reloaded.

Resolve the locale through a `currentLocale()` helper at call time instead; both
formatToNow and formatToNowStrict use it and the formatting itself is untouched.

The new test mocks getLocale, formats once with en, switches the mock to zh and
formats again in the same module instance: 1 failed before the change, 4 passed
after it.

Signed-off-by: Yxq <yu2651701064@tju.edu.cn>
Copilot AI balanced review requested due to automatic review settings October 20, 2026 08:35
@vercel

vercel Bot commented Oct 20, 2026

Copy link
Copy Markdown

@tju-yxq is attempting to deploy a commit to the codersett's projects Team on Vercel.

A member of the Team first needs to authorize it.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants