EmbyCrackedClient/web/modules/common/globalize.js

1 line
4.8 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import events from"./../emby-apiclient/events.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import userSettings from"./usersettings/usersettings.js";let allTranslations={},currentCulture,currentDateTimeCulture,currentLocales,allStrings={},rtlLocales=["ar","he","fa","ur","ug"],arabicLocales=["ar","fa","ur","ug"];function getCurrentLocale(){return currentCulture}function getCurrentDateTimeLocale(){return currentDateTimeCulture}function getCurrentLocales(){return currentLocales}function getDefaultLanguage(){var culture="undefined"==typeof document?null:document.documentElement.getAttribute("data-culture");return culture||navigator.language||navigator.userLanguage||(navigator.languages&&navigator.languages.length?navigator.languages[0]:"en-us")}function updateCurrentCulture(){let culture;try{culture=userSettings.language()}catch(err){}var dir;culture=culture||getDefaultLanguage(),"undefined"!=typeof document&&CSS.supports("text-align","start")&&CSS.supports("inset-inline-start","0")&&(dir=rtlLocales.includes((culture||"").toLowerCase())?"rtl":"ltr","rtl"==(document.dir=dir)?document.documentElement.classList.add("rtl"):document.documentElement.classList.remove("rtl"),arabicLocales.includes((culture||"").toLowerCase())?document.documentElement.classList.add("rtl-arabic"):document.documentElement.classList.remove("rtl-arabic")),currentCulture=normalizeLocaleName(culture),currentLocales=[currentCulture];let dateTimeCulture;try{dateTimeCulture=userSettings.dateTimeLocale()}catch(err){}currentDateTimeCulture=dateTimeCulture?normalizeLocaleName(dateTimeCulture):currentCulture,ensureTranslations(currentCulture),connectionManager.setCurrentLocale(currentCulture)}function ensureTranslations(culture){for(var i in allTranslations)ensureTranslation(allTranslations[i],culture)}function ensureTranslation(translationInfo,culture){return translationInfo.dictionaries[culture]?Promise.resolve():loadTranslation(translationInfo.translations,culture).then(function(dictionary){translationInfo.dictionaries[culture]=!0,dictionary&&(allStrings[culture]?allStrings[culture]=Object.assign(dictionary,allStrings[culture]||{}):allStrings[culture]=dictionary)})}function normalizeLocaleName(culture){var parts=(culture=culture.replace("_","-")).split("-"),parts=(culture=2===parts.length&&parts[0].toLowerCase()===parts[1].toLowerCase()?parts[0].toLowerCase():culture).toLowerCase();return"ca-es"===parts?"ca":"sv-se"===parts?"sv":parts}function getDictionary(){return allStrings[getCurrentLocale()]}function register(options){allTranslations[options.name]={translations:options.strings||options.translations,dictionaries:{}}}function loadStrings(options){var locale=getCurrentLocale();return"string"==typeof options?ensureTranslation(allTranslations[options],locale):(register(options),ensureTranslation(allTranslations[options.name],locale))}let cacheParam;function setCacheParam(value){cacheParam=value}function loadJsonFromUrlWithFetch(url){return fetch(url).then(function(response){return response.json()})}function loadJsonFromUrlWithXmlHttpRequest(url){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.onload=function(e){this.status<400?resolve(JSON.parse(this.response)):resolve()},xhr.onerror=function(){resolve()},xhr.send()})}function loadTranslation(translations,lang){lang=normalizeLocaleName(lang);let filtered=translations.filter(function(t){return normalizeLocaleName(t.lang)===lang});if(!(filtered=filtered.length?filtered:translations.filter(function(t){return"en-us"===normalizeLocaleName(t.lang)})).length)return Promise.resolve();let url=filtered[0].path;return cacheParam&&(url=(url+=-1===url.indexOf("?")?"?":"&")+cacheParam),("undefined"!=typeof XMLHttpRequest?loadJsonFromUrlWithXmlHttpRequest:loadJsonFromUrlWithFetch)(url)}function translateKey(key){var dictionary=getDictionary();if(dictionary){dictionary=dictionary[key];if(dictionary)return dictionary}return key}function translate(key){let val=translateKey(key);for(let i=1;i<arguments.length;i++)val=val.replaceAll("{"+(i-1)+"}",arg