From 899f61a51d9ada386ce392f3704641c299143bdd Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 6 Oct 2022 17:06:49 -0400 Subject: [PATCH] Backport pull request #4005 from jellyfin/release-10.8.z Fix locale with suffix Original-merge: b14d76a3d40ca35ea5d8f68c8241c397e1792f50 Merged-by: Bill Thornton Backported-by: Bill Thornton --- src/components/dashboard/users/UserCardBox.tsx | 4 ++-- src/controllers/dashboard/dashboard.js | 4 ++-- src/controllers/dashboard/devices/devices.js | 4 +++- .../dashboard/scheduledtasks/scheduledtasks.js | 4 ++-- src/scripts/dfnshelper.js | 9 +++++++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/components/dashboard/users/UserCardBox.tsx b/src/components/dashboard/users/UserCardBox.tsx index adc740180..05379be5b 100644 --- a/src/components/dashboard/users/UserCardBox.tsx +++ b/src/components/dashboard/users/UserCardBox.tsx @@ -1,7 +1,7 @@ import type { UserDto } from '@jellyfin/sdk/lib/generated-client'; import React, { FunctionComponent } from 'react'; import { formatDistanceToNow } from 'date-fns'; -import { localeWithSuffix } from '../../../scripts/dfnshelper'; +import { getLocaleWithSuffix } from '../../../scripts/dfnshelper'; import globalize from '../../../scripts/globalize'; import cardBuilder from '../../cardbuilder/cardBuilder'; import IconButtonElement from '../../../elements/IconButtonElement'; @@ -23,7 +23,7 @@ type IProps = { const getLastSeenText = (lastActivityDate?: string | null) => { if (lastActivityDate) { - return globalize.translate('LastSeen', formatDistanceToNow(Date.parse(lastActivityDate), localeWithSuffix)); + return globalize.translate('LastSeen', formatDistanceToNow(Date.parse(lastActivityDate), getLocaleWithSuffix())); } return ''; diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 7d9b9536c..ef4baa8be 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -6,7 +6,7 @@ import serverNotifications from '../../scripts/serverNotifications'; import dom from '../../scripts/dom'; import globalize from '../../scripts/globalize'; import { formatDistanceToNow } from 'date-fns'; -import { localeWithSuffix } from '../../scripts/dfnshelper'; +import { getLocaleWithSuffix } from '../../scripts/dfnshelper'; import loading from '../../components/loading/loading'; import playMethodHelper from '../../components/playback/playmethodhelper'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; @@ -477,7 +477,7 @@ import confirm from '../../components/confirm/confirm'; // how dates are returned by the server when the session is active and show something like 'Active now', instead of past/future sentences if (!nowPlayingItem) { return { - html: globalize.translate('LastSeen', formatDistanceToNow(Date.parse(session.LastActivityDate), localeWithSuffix)), + html: globalize.translate('LastSeen', formatDistanceToNow(Date.parse(session.LastActivityDate), getLocaleWithSuffix())), image: imgUrl }; } diff --git a/src/controllers/dashboard/devices/devices.js b/src/controllers/dashboard/devices/devices.js index 100fb1ff5..7fe0b8d06 100644 --- a/src/controllers/dashboard/devices/devices.js +++ b/src/controllers/dashboard/devices/devices.js @@ -5,7 +5,7 @@ import dom from '../../../scripts/dom'; import globalize from '../../../scripts/globalize'; import imageHelper from '../../../scripts/imagehelper'; import { formatDistanceToNow } from 'date-fns'; -import { localeWithSuffix } from '../../../scripts/dfnshelper'; +import { getLocaleWithSuffix } from '../../../scripts/dfnshelper'; import '../../../elements/emby-button/emby-button'; import '../../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../../components/cardbuilder/card.scss'; @@ -91,6 +91,8 @@ import confirm from '../../../components/confirm/confirm'; } function load(page, devices) { + const localeWithSuffix = getLocaleWithSuffix(); + let html = ''; html += devices.map(function (device) { let deviceHtml = ''; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index c000986ae..b11a561f5 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -4,7 +4,7 @@ import { Events } from 'jellyfin-apiclient'; import globalize from '../../../scripts/globalize'; import serverNotifications from '../../../scripts/serverNotifications'; import { formatDistance, formatDistanceToNow } from 'date-fns'; -import { getLocale, localeWithSuffix } from '../../../scripts/dfnshelper'; +import { getLocale, getLocaleWithSuffix } from '../../../scripts/dfnshelper'; import '../../../components/listview/listview.scss'; import '../../../elements/emby-button/emby-button'; @@ -83,7 +83,7 @@ import '../../../elements/emby-button/emby-button'; if (task.LastExecutionResult) { const endtime = Date.parse(task.LastExecutionResult.EndTimeUtc); const starttime = Date.parse(task.LastExecutionResult.StartTimeUtc); - html += globalize.translate('LabelScheduledTaskLastRan', formatDistanceToNow(endtime, localeWithSuffix), + html += globalize.translate('LabelScheduledTaskLastRan', formatDistanceToNow(endtime, getLocaleWithSuffix()), formatDistance(starttime, endtime, { locale: getLocale() })); if (task.LastExecutionResult.Status === 'Failed') { html += " (" + globalize.translate('LabelFailed') + ')'; diff --git a/src/scripts/dfnshelper.js b/src/scripts/dfnshelper.js index b32a6817a..8e3a2516e 100644 --- a/src/scripts/dfnshelper.js +++ b/src/scripts/dfnshelper.js @@ -68,9 +68,14 @@ export function getLocale() { return dateLocales(globalize.getCurrentLocale()) || dateLocales(globalize.getCurrentLocale().replace(/-.*/, '')) || enUS; } -export const localeWithSuffix = { addSuffix: true, locale: getLocale() }; +export function getLocaleWithSuffix() { + return { + addSuffix: true, + locale: getLocale() + }; +} export default { getLocale: getLocale, - localeWithSuffix: localeWithSuffix + getLocaleWithSuffix };