nuxt-i18n-micro 2.16.2 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{_ as s,u as a}from"./bXHUd9L-.js";import{v as i,x as u,y as e,z as o}from"./BFrUkGSa.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(u(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},b=s(f,[["__scopeId","data-v-84668211"]]);export{b as default};
1
+ import{_ as s,u as a}from"./CB1rVCw-.js";import{v as i,x as u,y as e,z as o}from"./CMoi8loD.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(u(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},h=s(f,[["__scopeId","data-v-fa2bb936"]]);export{h as default};
@@ -1 +1 @@
1
- {"id":"1aa61770-ac5d-493b-a2d0-b9b668345c88","timestamp":1766718534981}
1
+ {"id":"217db98e-106d-4783-a13f-f1d4477a5f43","timestamp":1768893600224}
@@ -0,0 +1 @@
1
+ {"id":"217db98e-106d-4783-a13f-f1d4477a5f43","timestamp":1768893600224,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-9a33fe1e]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-9a33fe1e]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media(prefers-color-scheme:light){.gradient-border[data-v-9a33fe1e]{background-color:#ffffff4d}.gradient-border[data-v-9a33fe1e]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media(prefers-color-scheme:dark){.gradient-border[data-v-9a33fe1e]{background-color:#1414144d}.gradient-border[data-v-9a33fe1e]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-9a33fe1e]:before{background-size:400% auto;border-radius:.5rem;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-9a33fe1e]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-9a33fe1e]{position:fixed}.left-0[data-v-9a33fe1e]{left:0}.right-0[data-v-9a33fe1e]{right:0}.z-10[data-v-9a33fe1e]{z-index:10}.z-20[data-v-9a33fe1e]{z-index:20}.grid[data-v-9a33fe1e]{display:grid}.mb-16[data-v-9a33fe1e]{margin-bottom:4rem}.mb-8[data-v-9a33fe1e]{margin-bottom:2rem}.max-w-520px[data-v-9a33fe1e]{max-width:520px}.min-h-screen[data-v-9a33fe1e]{min-height:100vh}.w-full[data-v-9a33fe1e]{width:100%}.flex[data-v-9a33fe1e]{display:flex}.cursor-pointer[data-v-9a33fe1e]{cursor:pointer}.place-content-center[data-v-9a33fe1e]{place-content:center}.items-center[data-v-9a33fe1e]{align-items:center}.justify-center[data-v-9a33fe1e]{justify-content:center}.overflow-hidden[data-v-9a33fe1e]{overflow:hidden}.bg-white[data-v-9a33fe1e]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-9a33fe1e]{padding-left:1rem;padding-right:1rem}.px-8[data-v-9a33fe1e]{padding-left:2rem;padding-right:2rem}.py-2[data-v-9a33fe1e]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-9a33fe1e]{text-align:center}.text-8xl[data-v-9a33fe1e]{font-size:6rem;line-height:1}.text-xl[data-v-9a33fe1e]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-9a33fe1e]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-9a33fe1e]{font-weight:300}.font-medium[data-v-9a33fe1e]{font-weight:500}.leading-tight[data-v-9a33fe1e]{line-height:1.25}.font-sans[data-v-9a33fe1e]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-9a33fe1e]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-black[data-v-9a33fe1e]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-9a33fe1e]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:px-0[data-v-9a33fe1e]{padding-left:0;padding-right:0}.sm\:px-6[data-v-9a33fe1e]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-9a33fe1e]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-9a33fe1e]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-9a33fe1e]{font-size:1.25rem;line-height:1.75rem}}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-fa2bb936]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-fa2bb936]{position:fixed}.-bottom-1\/2[data-v-fa2bb936]{bottom:-50%}.left-0[data-v-fa2bb936]{left:0}.right-0[data-v-fa2bb936]{right:0}.grid[data-v-fa2bb936]{display:grid}.mb-16[data-v-fa2bb936]{margin-bottom:4rem}.mb-8[data-v-fa2bb936]{margin-bottom:2rem}.h-1\/2[data-v-fa2bb936]{height:50%}.max-w-520px[data-v-fa2bb936]{max-width:520px}.min-h-screen[data-v-fa2bb936]{min-height:100vh}.place-content-center[data-v-fa2bb936]{place-content:center}.overflow-hidden[data-v-fa2bb936]{overflow:hidden}.bg-white[data-v-fa2bb936]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-fa2bb936]{padding-left:2rem;padding-right:2rem}.text-center[data-v-fa2bb936]{text-align:center}.text-8xl[data-v-fa2bb936]{font-size:6rem;line-height:1}.text-xl[data-v-fa2bb936]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-fa2bb936]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-fa2bb936]{font-weight:300}.font-medium[data-v-fa2bb936]{font-weight:500}.leading-tight[data-v-fa2bb936]{line-height:1.25}.font-sans[data-v-fa2bb936]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-fa2bb936]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-black[data-v-fa2bb936]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-fa2bb936]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:px-0[data-v-fa2bb936]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-fa2bb936]{font-size:2.25rem;line-height:2.5rem}}
@@ -1,11 +1,11 @@
1
1
  <!DOCTYPE html><html><head><meta charset="utf-8">
2
2
  <meta name="viewport" content="width=device-width, initial-scale=1">
3
3
  <link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.v6jsTdX3.css" crossorigin>
4
- <link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BFrUkGSa.js">
5
- <link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-404.OwiUC7VJ.css">
6
- <link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/sOueiY8Y.js">
7
- <link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/bXHUd9L-.js">
8
- <link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-500.CJE2oXy_.css">
9
- <link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/YZS8RX49.js">
10
- <script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BFrUkGSa.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1766718537830,false]</script>
11
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"1aa61770-ac5d-493b-a2d0-b9b668345c88",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
4
+ <link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/CMoi8loD.js">
5
+ <link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-404.D2iECogn.css">
6
+ <link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/CCuzUjxx.js">
7
+ <link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/CB1rVCw-.js">
8
+ <link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-500.CMRINVjo.css">
9
+ <link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/DvNkspSg.js">
10
+ <script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/CMoi8loD.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1768893603118,false]</script>
11
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"217db98e-106d-4783-a13f-f1d4477a5f43",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-i18n-micro",
3
3
  "configKey": "i18n",
4
- "version": "2.16.2",
4
+ "version": "2.17.0",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -1177,6 +1177,17 @@ ${accepts}
1177
1177
  addPrerenderRoutes(prerenderRoutes);
1178
1178
  });
1179
1179
  nuxt.hook("nitro:config", (nitroConfig) => {
1180
+ nitroConfig.serverAssets = nitroConfig.serverAssets || [];
1181
+ rootDirs.forEach((dir, index) => {
1182
+ const dirPath = path.resolve(dir, options.translationDir || "locales");
1183
+ if (fs__default.existsSync(dirPath)) {
1184
+ nitroConfig.serverAssets.push({
1185
+ // Даем уникальное имя каждому слою, чтобы потом найти их в рантайме
1186
+ baseName: `i18n_layer_${index}`,
1187
+ dir: dirPath
1188
+ });
1189
+ }
1190
+ });
1180
1191
  if (nitroConfig.imports) {
1181
1192
  nitroConfig.imports.presets = nitroConfig.imports.presets || [];
1182
1193
  nitroConfig.imports.presets.push({
@@ -1,5 +1,3 @@
1
- import { resolve } from "node:path";
2
- import { readFile } from "node:fs/promises";
3
1
  import { defineEventHandler, setResponseHeader } from "h3";
4
2
  import { useRuntimeConfig, createError, useStorage } from "#imports";
5
3
  let storageInit = false;
@@ -17,22 +15,11 @@ function deepMerge(target, source) {
17
15
  }
18
16
  return output;
19
17
  }
20
- async function readTranslationFile(filePath, debug) {
21
- try {
22
- const content = await readFile(filePath, "utf-8");
23
- return JSON.parse(content);
24
- } catch (e) {
25
- if (debug && e?.code !== "ENOENT") {
26
- console.error(`[i18n] Error loading locale file: ${filePath}`, e);
27
- }
28
- return null;
29
- }
30
- }
31
18
  export default defineEventHandler(async (event) => {
32
19
  setResponseHeader(event, "Content-Type", "application/json");
33
20
  const { page, locale } = event.context.params;
34
21
  const config = useRuntimeConfig();
35
- const { rootDirs, debug, translationDir, fallbackLocale, routesLocaleLinks } = config.i18nConfig;
22
+ const { rootDirs, debug, routesLocaleLinks } = config.i18nConfig;
36
23
  const { locales } = config.public.i18nConfig;
37
24
  if (locales && !locales.map((l) => l.code).includes(locale)) {
38
25
  throw createError({ statusCode: 404 });
@@ -55,26 +42,46 @@ export default defineEventHandler(async (event) => {
55
42
  if (cachedMerged) {
56
43
  return cachedMerged;
57
44
  }
58
- const getPathsFor = (targetLocale, targetPage) => rootDirs.map((dir) => resolve(dir, translationDir, targetPage === "general" ? `${targetLocale}.json` : `pages/${targetPage}/${targetLocale}.json`));
45
+ const storage = useStorage();
59
46
  let finalTranslations = {};
60
47
  const currentLocaleConfig = locales?.find((l) => l.code === locale) ?? null;
61
48
  const loadAndMerge = async (targetLocale) => {
62
49
  let globalTranslations = {};
63
50
  let pageTranslations = {};
64
- for (const p of getPathsFor(targetLocale, "general")) {
65
- const content = await readTranslationFile(p, debug);
66
- if (content) globalTranslations = deepMerge(globalTranslations, content);
67
- }
68
- if (page !== "general") {
69
- for (const p of getPathsFor(targetLocale, fileLookupPage)) {
70
- const content = await readTranslationFile(p, debug);
71
- if (content) pageTranslations = deepMerge(pageTranslations, content);
51
+ for (let i = 0; i < rootDirs.length; i++) {
52
+ const layerPrefix = `assets:i18n_layer_${i}`;
53
+ const globalKey = `${layerPrefix}:${targetLocale}.json`;
54
+ try {
55
+ const globalContent = await storage.getItem(globalKey);
56
+ if (globalContent) {
57
+ globalTranslations = deepMerge(globalTranslations, globalContent);
58
+ }
59
+ } catch (e) {
60
+ if (debug) {
61
+ console.error(`[i18n] Error loading global translations: ${globalKey}`, e);
62
+ }
63
+ }
64
+ if (page !== "general") {
65
+ const normalizedPage = fileLookupPage.replace(/\//g, ":");
66
+ const pageKey = `${layerPrefix}:pages:${normalizedPage}:${targetLocale}.json`;
67
+ try {
68
+ const pageContent = await storage.getItem(pageKey);
69
+ if (pageContent) {
70
+ pageTranslations = deepMerge(pageTranslations, pageContent);
71
+ }
72
+ } catch (e) {
73
+ if (debug) {
74
+ console.error(`[i18n] Error loading page translations: ${pageKey}`, e);
75
+ }
76
+ }
72
77
  }
73
78
  }
74
79
  return deepMerge(globalTranslations, pageTranslations);
75
80
  };
76
81
  const fallbackLocalesList = [
77
- fallbackLocale,
82
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
83
+ // @ts-ignore
84
+ config.i18nConfig?.fallbackLocale,
78
85
  currentLocaleConfig?.fallbackLocale
79
86
  ].filter((l) => !!l && l !== locale);
80
87
  for (const fb of [...new Set(fallbackLocalesList)]) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-i18n-micro",
3
- "version": "2.16.2",
3
+ "version": "2.17.0",
4
4
  "description": "Nuxt I18n Micro is a lightweight, high-performance internationalization module for Nuxt, designed to handle multi-language support with minimal overhead, fast build times, and efficient runtime performance.",
5
5
  "repository": "s00d/nuxt-i18n-micro",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"id":"1aa61770-ac5d-493b-a2d0-b9b668345c88","timestamp":1766718534981,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -1 +0,0 @@
1
- .spotlight[data-v-e377ae42]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-e377ae42]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media(prefers-color-scheme:light){.gradient-border[data-v-e377ae42]{background-color:#ffffff4d}.gradient-border[data-v-e377ae42]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media(prefers-color-scheme:dark){.gradient-border[data-v-e377ae42]{background-color:#1414144d}.gradient-border[data-v-e377ae42]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-e377ae42]:before{background-size:400% auto;border-radius:.5rem;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-e377ae42]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-e377ae42]{position:fixed}.left-0[data-v-e377ae42]{left:0}.right-0[data-v-e377ae42]{right:0}.z-10[data-v-e377ae42]{z-index:10}.z-20[data-v-e377ae42]{z-index:20}.grid[data-v-e377ae42]{display:grid}.mb-16[data-v-e377ae42]{margin-bottom:4rem}.mb-8[data-v-e377ae42]{margin-bottom:2rem}.max-w-520px[data-v-e377ae42]{max-width:520px}.min-h-screen[data-v-e377ae42]{min-height:100vh}.w-full[data-v-e377ae42]{width:100%}.flex[data-v-e377ae42]{display:flex}.cursor-pointer[data-v-e377ae42]{cursor:pointer}.place-content-center[data-v-e377ae42]{place-content:center}.items-center[data-v-e377ae42]{align-items:center}.justify-center[data-v-e377ae42]{justify-content:center}.overflow-hidden[data-v-e377ae42]{overflow:hidden}.bg-white[data-v-e377ae42]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-e377ae42]{padding-left:1rem;padding-right:1rem}.px-8[data-v-e377ae42]{padding-left:2rem;padding-right:2rem}.py-2[data-v-e377ae42]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-e377ae42]{text-align:center}.text-8xl[data-v-e377ae42]{font-size:6rem;line-height:1}.text-xl[data-v-e377ae42]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-e377ae42]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-e377ae42]{font-weight:300}.font-medium[data-v-e377ae42]{font-weight:500}.leading-tight[data-v-e377ae42]{line-height:1.25}.font-sans[data-v-e377ae42]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-e377ae42]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-black[data-v-e377ae42]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-e377ae42]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:px-0[data-v-e377ae42]{padding-left:0;padding-right:0}.sm\:px-6[data-v-e377ae42]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-e377ae42]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-e377ae42]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-e377ae42]{font-size:1.25rem;line-height:1.75rem}}
@@ -1 +0,0 @@
1
- .spotlight[data-v-84668211]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-84668211]{position:fixed}.-bottom-1\/2[data-v-84668211]{bottom:-50%}.left-0[data-v-84668211]{left:0}.right-0[data-v-84668211]{right:0}.grid[data-v-84668211]{display:grid}.mb-16[data-v-84668211]{margin-bottom:4rem}.mb-8[data-v-84668211]{margin-bottom:2rem}.h-1\/2[data-v-84668211]{height:50%}.max-w-520px[data-v-84668211]{max-width:520px}.min-h-screen[data-v-84668211]{min-height:100vh}.place-content-center[data-v-84668211]{place-content:center}.overflow-hidden[data-v-84668211]{overflow:hidden}.bg-white[data-v-84668211]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-84668211]{padding-left:2rem;padding-right:2rem}.text-center[data-v-84668211]{text-align:center}.text-8xl[data-v-84668211]{font-size:6rem;line-height:1}.text-xl[data-v-84668211]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-84668211]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-84668211]{font-weight:300}.font-medium[data-v-84668211]{font-weight:500}.leading-tight[data-v-84668211]{line-height:1.25}.font-sans[data-v-84668211]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-84668211]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-black[data-v-84668211]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-84668211]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:px-0[data-v-84668211]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-84668211]{font-size:2.25rem;line-height:2.5rem}}