mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
First successful attempt at dynamic lang loading
This commit is contained in:
parent
4d21fbcc78
commit
368f21010b
6 changed files with 113 additions and 10 deletions
|
@ -52,7 +52,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"alameda": "^1.4.0",
|
"alameda": "^1.4.0",
|
||||||
"core-js": "^3.6.4",
|
"core-js": "^3.6.4",
|
||||||
"date-fns": "^2.11.0",
|
"date-fns": "^2.11.1",
|
||||||
"document-register-element": "^1.14.3",
|
"document-register-element": "^1.14.3",
|
||||||
"flv.js": "^1.5.0",
|
"flv.js": "^1.5.0",
|
||||||
"hls.js": "^0.13.1",
|
"hls.js": "^0.13.1",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { es } from 'date-fns/locale'
|
define(["jQuery", "loading", "events", "globalize", "dfnshelper", "serverNotifications", "date-fns", "listViewStyle", "emby-button"], function($, loading, events, globalize, dfnshelper, serverNotifications, datefns) {
|
||||||
define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date-fns", "listViewStyle", "emby-button"], function($, loading, events, globalize, serverNotifications, datefns) {
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function reloadList(page) {
|
function reloadList(page) {
|
||||||
|
@ -67,8 +66,8 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date
|
||||||
var html = "";
|
var html = "";
|
||||||
if (task.State === "Idle") {
|
if (task.State === "Idle") {
|
||||||
if (task.LastExecutionResult) {
|
if (task.LastExecutionResult) {
|
||||||
html += globalize.translate("LabelScheduledTaskLastRan", datefns.formatDistanceToNow(Date.parse(task.LastExecutionResult.EndTimeUtc), { addSuffix: true, 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: es }));
|
datefns.formatDistance(Date.parse(task.LastExecutionResult.StartTimeUtc), Date.parse(task.LastExecutionResult.EndTimeUtc), { addSuffix: false, locale: dfnshelper.getLocale() }));
|
||||||
if (task.LastExecutionResult.Status === "Failed") {
|
if (task.LastExecutionResult.Status === "Failed") {
|
||||||
html += " <span style='color:#FF0000;'>(" + globalize.translate("LabelFailed") + ")</span>";
|
html += " <span style='color:#FF0000;'>(" + globalize.translate("LabelFailed") + ")</span>";
|
||||||
} else if (task.LastExecutionResult.Status === "Cancelled") {
|
} else if (task.LastExecutionResult.Status === "Cancelled") {
|
||||||
|
|
103
src/scripts/dfnshelper.js
Normal file
103
src/scripts/dfnshelper.js
Normal file
|
@ -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
|
||||||
|
};
|
||||||
|
});
|
|
@ -648,6 +648,7 @@ var AppInfo = {};
|
||||||
inputManager: "scripts/inputManager",
|
inputManager: "scripts/inputManager",
|
||||||
datetime: "scripts/datetime",
|
datetime: "scripts/datetime",
|
||||||
globalize: "scripts/globalize",
|
globalize: "scripts/globalize",
|
||||||
|
dfnshelper: "scripts/dfnshelper",
|
||||||
libraryMenu: "scripts/librarymenu",
|
libraryMenu: "scripts/librarymenu",
|
||||||
playlisteditor: componentsPath + "/playlisteditor/playlisteditor",
|
playlisteditor: componentsPath + "/playlisteditor/playlisteditor",
|
||||||
medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator",
|
medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator",
|
||||||
|
|
|
@ -1481,5 +1481,5 @@
|
||||||
"PathNotFound": "No se encontró la ruta especificada. Asegúrate de que existe e inténtalo de nuevo.",
|
"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.",
|
"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}",
|
"ListPaging": "{0} de {1}",
|
||||||
"PersonRole": "como {0}",
|
"PersonRole": "como {0}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -3085,10 +3085,10 @@ dashdash@^1.12.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
assert-plus "^1.0.0"
|
assert-plus "^1.0.0"
|
||||||
|
|
||||||
date-fns@^2.11.0:
|
date-fns@^2.11.1:
|
||||||
version "2.11.0"
|
version "2.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.0.tgz#ec2b44977465b9dcb370021d5e6c019b19f36d06"
|
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.1.tgz#197b8be1bbf5c5e6fe8bea817f0fe111820e7a12"
|
||||||
integrity sha512-8P1cDi8ebZyDxUyUprBXwidoEtiQAawYPGvpfb+Dg0G6JrQ+VozwOmm91xYC0vAv1+0VmLehEPb+isg4BGUFfA==
|
integrity sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w==
|
||||||
|
|
||||||
dateformat@^2.0.0:
|
dateformat@^2.0.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue