fix: correct invalid BCP 47 language tag in Jellyseerr components

Fix RangeError caused by invalid locale tags (e.g., zh-CN-US) in
multiple Jellyseerr components. The locale variable already contains
a complete BCP 47 language tag (e.g., zh-CN), so concatenating it
with region (e.g., US) creates an invalid tag.

Changes:
- DetailFacts.tsx: Fix 5 occurrences in date and currency formatting
- JellyseerrSeasons.tsx: Fix 1 occurrence in upcoming air date
- person/[personId].tsx: Fix 1 occurrence in birthday formatting

Total: 3 files, 7 fixes

Closes #1130

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
bot2
2025-11-17 20:53:57 +08:00
committed by Bo2
parent c05cef295e
commit b630e0784b
3 changed files with 17 additions and 26 deletions

View File

@@ -88,14 +88,11 @@ export default function page() {
<Text className='opacity-50'> <Text className='opacity-50'>
{t("jellyseerr.born")}{" "} {t("jellyseerr.born")}{" "}
{data?.details?.birthday && {data?.details?.birthday &&
new Date(data.details.birthday).toLocaleDateString( new Date(data.details.birthday).toLocaleDateString(locale, {
`${locale}-${region}`, year: "numeric",
{ month: "long",
year: "numeric", day: "numeric",
month: "long", })}{" "}
day: "numeric",
},
)}{" "}
| {data?.details?.placeOfBirth} | {data?.details?.placeOfBirth}
</Text> </Text>
</> </>

View File

@@ -81,10 +81,7 @@ const DetailFacts: React.FC<
const firstAirDate = useMemo(() => { const firstAirDate = useMemo(() => {
const firstAirDate = (details as TvDetails)?.firstAirDate; const firstAirDate = (details as TvDetails)?.firstAirDate;
if (firstAirDate) { if (firstAirDate) {
return new Date(firstAirDate).toLocaleDateString( return new Date(firstAirDate).toLocaleDateString(locale, dateOpts);
`${locale}-${region}`,
dateOpts,
);
} }
}, [details]); }, [details]);
@@ -92,28 +89,25 @@ const DetailFacts: React.FC<
const firstAirDate = (details as TvDetails)?.firstAirDate; const firstAirDate = (details as TvDetails)?.firstAirDate;
const nextAirDate = (details as TvDetails)?.nextEpisodeToAir?.airDate; const nextAirDate = (details as TvDetails)?.nextEpisodeToAir?.airDate;
if (nextAirDate && firstAirDate !== nextAirDate) { if (nextAirDate && firstAirDate !== nextAirDate) {
return new Date(nextAirDate).toLocaleDateString( return new Date(nextAirDate).toLocaleDateString(locale, dateOpts);
`${locale}-${region}`,
dateOpts,
);
} }
}, [details]); }, [details]);
const revenue = useMemo( const revenue = useMemo(
() => () =>
(details as MovieDetails)?.revenue?.toLocaleString?.( (details as MovieDetails)?.revenue?.toLocaleString?.(locale, {
`${locale}-${region}`, style: "currency",
{ style: "currency", currency: "USD" }, currency: "USD",
), }),
[details], [details],
); );
const budget = useMemo( const budget = useMemo(
() => () =>
(details as MovieDetails)?.budget?.toLocaleString?.( (details as MovieDetails)?.budget?.toLocaleString?.(locale, {
`${locale}-${region}`, style: "currency",
{ style: "currency", currency: "USD" }, currency: "USD",
), }),
[details], [details],
); );
@@ -171,7 +165,7 @@ const DetailFacts: React.FC<
)} )}
<Text> <Text>
{new Date(r.release_date).toLocaleDateString( {new Date(r.release_date).toLocaleDateString(
`${locale}-${region}`, locale,
dateOpts, dateOpts,
)} )}
</Text> </Text>

View File

@@ -69,7 +69,7 @@ const RenderItem = ({ item }: any) => {
if (airDate) { if (airDate) {
const airDateObj = new Date(airDate); const airDateObj = new Date(airDate);
if (new Date() < airDateObj) { if (new Date() < airDateObj) {
return airDateObj.toLocaleDateString(`${locale}-${region}`, dateOpts); return airDateObj.toLocaleDateString(locale, dateOpts);
} }
} }
}, [item, locale, region]); }, [item, locale, region]);