1var Translation; 2(function (Translation) { 3 // In-memory store: resourceFile -> { key -> value } 4 const store = {}; 5 // Defaults embedded at generation-time for immediate fallbacks 6 const defaults = {}; 7 const TS_NAMESPACE = "TypeScriptResources"; 8 function toResourceName(file) { 9 // If already fully-qualified, return as-is 10 if (file.indexOf(".") >= 0) 11 return file; 12 return `${TS_NAMESPACE}.${file}`; 13 } 14 /** 15 * Synchronous getter used by the generated TypeScript translation files (Admin.ts, Api.ts, etc.) to retrieve a translation. 16 */ 17 function get(resourceFile, key) { 18 const name = toResourceName(resourceFile); 19 if (store[name] && store[name][key] !== undefined) 20 return store[name][key]; 21 if (defaults[name] && defaults[name][key] !== undefined) 22 return defaults[name][key]; 23 return ""; 24 } 25 Translation.get = get; 26 /** 27 * Preload a single resource from server and merge with defaults 28 */ 29 async function preload(resourceFile) { 30 const name = toResourceName(resourceFile); 31 // Ensure defaults entry exists 32 if (!defaults[name]) 33 defaults[name] = {}; 34 try { 35 const culture = String(Translation.currentLanguage || $("#activeLanguage").val() || "nl-NL"); 36 const url = `/ResourceManagement/Translations/SingleResourceFile?resourceFile=${name}&culture=${culture}`; 37 const raw = await $.getJSON(url); 38 const success = (raw.Success ?? true); 39 if (!success) { 40 // Fallback: keep only defaults 41 fallbackToDefault(); 42 return; 43 } 44 const payload = (raw.Object ?? {}); 45 if (!payload || !payload.Resources) { 46 // No usable data -> fallback to defaults 47 fallbackToDefault(); 48 return; 49 } 50 const serverValues = payload.Resources || {}; 51 // Merge server values over defaults 52 store[name] = Object.assign({}, defaults[name], serverValues); 53 } 54 catch (e) { 55 // Fail -> fallback to defaults 56 fallbackToDefault(); 57 } 58 function fallbackToDefault() { 59 store[name] = Object.assign({}, defaults[name]); 60 } 61 } 62 Translation.preload = preload; 63 /** 64 * Preload multiple resource files from server and merge with defaults 65 */ 66 async function preloadAll(resourceFiles) { 67 const culture = String(Translation.currentLanguage || $("#activeLanguage").val() || "nl-NL"); 68 const canonical = resourceFiles.map(toResourceName); 69 // Build multi-value query: ?resourceFiles=A&resourceFiles=B&... 70 const query = canonical.map(r => "resourceFiles=" + encodeURIComponent(r)).join("&"); 71 const url = `/ResourceManagement/Translations/MultipleResourceFiles?culture=${culture}&${query}`; 72 try { 73 const raw = await $.getJSON(url); 74 const success = (raw.Success ?? true); 75 if (!success) { 76 fallbackToDefault(resourceFiles); 77 return; 78 } 79 const payload = (raw.Object ?? {}); 80 if (!payload || !payload.Resources) { 81 fallbackToDefault(resourceFiles); 82 return; 83 } 84 for (const resourceName of Object.keys(payload.Resources)) { 85 const bundle = payload.Resources[resourceName]; 86 if (!bundle) { 87 continue; 88 } 89 const serverValues = bundle.values || {}; 90 // Merge on top of defaults 91 store[resourceName] = Object.assign({}, defaults[resourceName] || {}, serverValues); 92 } 93 } 94 catch (err) { 95 fallbackToDefault(resourceFiles); 96 } 97 function fallbackToDefault(resourceFiles) { 98 for (const file of resourceFiles) { 99 const name = toResourceName(file); 100 store[name] = Object.assign({}, defaults[name] || {}); 101 } 102 } 103 } 104 Translation.preloadAll = preloadAll; 105 /** 106 * INTERNAL: Used by generated TypeScript translation files (Admin.ts, Api.ts, etc.) to populate defaults at startup (filled by T4) 107 */ 108 function __registerDefaults(resourceFile, data) { 109 defaults[resourceFile] = Object.assign({}, defaults[resourceFile] || {}, data); 110 } 111 Translation.__registerDefaults = __registerDefaults; 112})(Translation || (Translation = {}));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.