From 368f21010bbcd61bb24ad41a5a5eaa81dbf73b50 Mon Sep 17 00:00:00 2001 From: ferferga Date: Thu, 2 Apr 2020 19:31:32 +0200 Subject: [PATCH] First successful attempt at dynamic lang loading --- package.json | 2 +- .../scheduledtasks/scheduledtasks.js | 7 +- src/scripts/dfnshelper.js | 103 ++++++++++++++++++ src/scripts/site.js | 1 + src/strings/es.json | 2 +- yarn.lock | 8 +- 6 files changed, 113 insertions(+), 10 deletions(-) create mode 100644 src/scripts/dfnshelper.js diff --git a/package.json b/package.json index 2138e51f01..1446782cc3 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "dependencies": { "alameda": "^1.4.0", "core-js": "^3.6.4", - "date-fns": "^2.11.0", + "date-fns": "^2.11.1", "document-register-element": "^1.14.3", "flv.js": "^1.5.0", "hls.js": "^0.13.1", diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 5f437cc47b..133e6247de 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -1,5 +1,4 @@ -import { es } from 'date-fns/locale' -define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date-fns", "listViewStyle", "emby-button"], function($, loading, events, globalize, serverNotifications, datefns) { +define(["jQuery", "loading", "events", "globalize", "dfnshelper", "serverNotifications", "date-fns", "listViewStyle", "emby-button"], function($, loading, events, globalize, dfnshelper, serverNotifications, datefns) { "use strict"; function reloadList(page) { @@ -67,8 +66,8 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date var html = ""; if (task.State === "Idle") { if (task.LastExecutionResult) { - html += globalize.translate("LabelScheduledTaskLastRan", datefns.formatDistanceToNow(Date.parse(task.LastExecutionResult.EndTimeUtc), { addSuffix: true, locale: es }), - datefns.formatDistance(Date.parse(task.LastExecutionResult.StartTimeUtc), Date.parse(task.LastExecutionResult.EndTimeUtc), { addSuffix: false, locale: es })); + html += globalize.translate("LabelScheduledTaskLastRan", datefns.formatDistanceToNow(Date.parse(task.LastExecutionResult.EndTimeUtc), { addSuffix: true, locale: dfnshelper.getLocale() }), + datefns.formatDistance(Date.parse(task.LastExecutionResult.StartTimeUtc), Date.parse(task.LastExecutionResult.EndTimeUtc), { addSuffix: false, locale: dfnshelper.getLocale() })); if (task.LastExecutionResult.Status === "Failed") { html += " (" + globalize.translate("LabelFailed") + ")"; } else if (task.LastExecutionResult.Status === "Cancelled") { diff --git a/src/scripts/dfnshelper.js b/src/scripts/dfnshelper.js new file mode 100644 index 0000000000..f317613454 --- /dev/null +++ b/src/scripts/dfnshelper.js @@ -0,0 +1,103 @@ +import * as locale from 'date-fns/locale' +define(["globalize"], function (globalize) { + "use strict"; + + function getLocale() + { + switch (globalize.getCurrentLocale()) { + case 'ar': + return locale.ar; + case 'be-by': + return locale.be; + case 'bg-bg': + return locale.bg; + case 'ca': + return locale.ca; + case 'cs': + return locale.cs; + case 'da': + return locale.da; + case 'de': + return locale.de; + case 'el': + return locale.el + case 'en-gb': + return locale.enGB; + case 'en-us': + return locale.enUS; + case 'es': + return locale.es; + case 'es-ar': + return locale.es; + case 'es-mx': + return locale.es; + case 'fa': + return locale.faIR; + case 'fi': + return locale.fi; + case 'fr': + return locale.fr; + case 'fr-ca': + return locale.frCA; + case 'gsw': + return locale.de; + case 'he': + return locale.he; + case 'hi-in': + return locale.hi; + case 'hr': + return locale.hr; + case 'hu': + return locale.hu; + case 'id': + return locale.id; + case 'it': + return locale.it + case 'kk': + return locale.kk; + case 'ko': + return locale.ko; + case 'lt-lt': + return locale.lt; + case 'ms': + return locale.ms; + case 'nb': + return locale.nb; + case 'nl': + return locale.nl; + case 'pl': + return locale.pl + case 'pt-br': + return locale.ptBR; + case 'pt-pt': + return locale.pt; + case 'ro': + return locale.ro; + case 'ru': + return locale.ru; + case 'sk': + return locale.sk; + case 'sl-si': + return locale.sl; + case 'sv': + return locale.sv; + case 'tr': + return locale.tr; + case 'uk': + return locale.uk; + case 'vi': + return locale.vi; + case 'zh-cn': + return locale.zhCN; + case 'zh-hk': + return locale.zhCN; + case 'zh-tw': + return locale.zhTW; + default: + return locale.enUS; + } + } + return { + getLocale: getLocale + }; +}); \ No newline at end of file diff --git a/src/scripts/site.js b/src/scripts/site.js index 4285137f18..0a65cf1a63 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -648,6 +648,7 @@ var AppInfo = {}; inputManager: "scripts/inputManager", datetime: "scripts/datetime", globalize: "scripts/globalize", + dfnshelper: "scripts/dfnshelper", libraryMenu: "scripts/librarymenu", playlisteditor: componentsPath + "/playlisteditor/playlisteditor", medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator", diff --git a/src/strings/es.json b/src/strings/es.json index ddf631191c..e35d29cc4e 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1481,5 +1481,5 @@ "PathNotFound": "No se encontró la ruta especificada. Asegúrate de que existe e inténtalo de nuevo.", "WriteAccessRequired": "Jellyfin requiere de permisos de escritura en esta carpeta. Asegúrate de que existe este permiso e inténtalo de nuevo.", "ListPaging": "{0} de {1}", - "PersonRole": "como {0}", + "PersonRole": "como {0}" } diff --git a/yarn.lock b/yarn.lock index 6410d07831..d4be1ef5e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3085,10 +3085,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-fns@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.0.tgz#ec2b44977465b9dcb370021d5e6c019b19f36d06" - integrity sha512-8P1cDi8ebZyDxUyUprBXwidoEtiQAawYPGvpfb+Dg0G6JrQ+VozwOmm91xYC0vAv1+0VmLehEPb+isg4BGUFfA== +date-fns@^2.11.1: + version "2.11.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.1.tgz#197b8be1bbf5c5e6fe8bea817f0fe111820e7a12" + integrity sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w== dateformat@^2.0.0: version "2.2.0"