nuxt-i18n-micro 3.29.3 → 3.29.4
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.
- package/dist/client/200.html +1 -1
- package/dist/client/404.html +1 -1
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/7a8cab88-a568-460d-8a67-5955e9b3c5ff.json +1 -0
- package/dist/client/index.html +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -0
- package/dist/runtime/composables/useLocaleHead.js +17 -10
- package/dist/runtime/utils/nuxt-i18n.js +3 -2
- package/dist/runtime/utils/trailing-slash.d.ts +5 -0
- package/dist/runtime/utils/trailing-slash.js +6 -0
- package/package.json +8 -8
- package/dist/client/_nuxt/builds/meta/652a5b66-66b7-45f2-a0fb-ea5f21477cbe.json +0 -1
package/dist/client/200.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.BRCCa7jH.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BlsWt_np.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C7JgQlK0.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CSbZDNyO.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.BRCCa7jH.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BlsWt_np.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C7JgQlK0.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CSbZDNyO.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"7a8cab88-a568-460d-8a67-5955e9b3c5ff",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1789393266818,false]</script></body></html>
|
package/dist/client/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.BRCCa7jH.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BlsWt_np.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C7JgQlK0.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CSbZDNyO.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.BRCCa7jH.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BlsWt_np.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C7JgQlK0.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CSbZDNyO.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"7a8cab88-a568-460d-8a67-5955e9b3c5ff",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1789393266819,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"7a8cab88-a568-460d-8a67-5955e9b3c5ff","timestamp":1789393262923}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"7a8cab88-a568-460d-8a67-5955e9b3c5ff","timestamp":1789393262923,"prerendered":[]}
|
package/dist/client/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.BRCCa7jH.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BlsWt_np.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C7JgQlK0.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CSbZDNyO.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/CZxMDymS.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.BRCCa7jH.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BlsWt_np.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C7JgQlK0.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CSbZDNyO.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"7a8cab88-a568-460d-8a67-5955e9b3c5ff",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1789393266819,false]</script></body></html>
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -539,6 +539,7 @@ function buildFullConfig(params) {
|
|
|
539
539
|
strategy: options.strategy ?? "prefix_except_default",
|
|
540
540
|
dateBuild,
|
|
541
541
|
hashMode: nuxt.options?.router?.options?.hashMode ?? false,
|
|
542
|
+
trailingSlash: options.trailingSlash ?? nuxt.options.experimental?.defaults?.nuxtLink?.trailingSlash,
|
|
542
543
|
apiBaseUrl: apiConfig.apiBaseUrl,
|
|
543
544
|
apiBaseClientHost: apiConfig.apiBaseClientHost,
|
|
544
545
|
isSSG,
|
|
@@ -74,17 +74,25 @@ export const useLocaleHead = ({
|
|
|
74
74
|
if (!fullPath.startsWith("/")) {
|
|
75
75
|
fullPath = `/${fullPath}`;
|
|
76
76
|
}
|
|
77
|
-
const
|
|
78
|
-
|
|
77
|
+
const whitelist = canonicalQueryWhitelist ?? [];
|
|
78
|
+
const currentSwitchedPath = switchLocalePath(locale);
|
|
79
79
|
let ogUrl;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
if (currentSwitchedPath) {
|
|
81
|
+
if (currentSwitchedPath.startsWith("http://") || currentSwitchedPath.startsWith("https://")) {
|
|
82
|
+
ogUrl = filterLocalizedHref(currentSwitchedPath, whitelist);
|
|
83
|
+
} else {
|
|
84
|
+
const filteredPath = filterLocalizedHref(currentSwitchedPath, whitelist);
|
|
85
|
+
ogUrl = joinURL(unref(baseUrl), filteredPath.startsWith("/") ? filteredPath : `/${filteredPath}`);
|
|
86
|
+
}
|
|
85
87
|
} else {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
const matchedLocale = [...locales].sort((a, b) => b.code.length - a.code.length).find((localeItem) => fullPath.startsWith(`/${localeItem.code}`));
|
|
89
|
+
let localizedPath = fullPath;
|
|
90
|
+
if (routeName.startsWith(localizedRouteNamePrefixResolved) && matchedLocale) {
|
|
91
|
+
localizedPath = fullPath.slice(matchedLocale.code.length + 1);
|
|
92
|
+
ogUrl = joinURL(unref(baseUrl), locale, filterQuery(localizedPath, whitelist));
|
|
93
|
+
} else {
|
|
94
|
+
ogUrl = joinURL(unref(baseUrl), filterQuery(fullPath, whitelist));
|
|
95
|
+
}
|
|
88
96
|
}
|
|
89
97
|
const htmlAttrs = {
|
|
90
98
|
lang: currentIso,
|
|
@@ -127,7 +135,6 @@ export const useLocaleHead = ({
|
|
|
127
135
|
};
|
|
128
136
|
const defaultLocale = i18nConfig.defaultLocale || "en";
|
|
129
137
|
const defaultLocaleObj = allLocales.find((loc) => loc.code === defaultLocale);
|
|
130
|
-
const whitelist = canonicalQueryWhitelist ?? [];
|
|
131
138
|
const alternateLinks = isNoPrefixStrategy(strategy) ? [] : (() => {
|
|
132
139
|
const hrefByCode = /* @__PURE__ */ new Map();
|
|
133
140
|
for (const loc of localesForSeo) {
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import { deepMergeTranslationsRecursive } from "@i18n-micro/utils/deep-merge";
|
|
10
10
|
import { shallowRef, triggerRef, unref } from "vue";
|
|
11
11
|
import { translationStorage } from "./storage.js";
|
|
12
|
+
import { applyTrailingSlash } from "./trailing-slash.js";
|
|
12
13
|
function toRouteLocationResolved(result) {
|
|
13
14
|
const fullPath = result.fullPath ?? result.path ?? "";
|
|
14
15
|
const path = result.path ?? fullPath.split("?")[0]?.split("#")[0] ?? fullPath;
|
|
@@ -438,7 +439,7 @@ export function createNuxtI18nPluginApi(deps) {
|
|
|
438
439
|
const route = router.currentRoute.value;
|
|
439
440
|
const fromLocale = getCurrentLocale(route);
|
|
440
441
|
const switched = i18nStrategy.switchLocaleRoute(fromLocale, toLocale, route, { i18nRouteParams: unref(i18nRouteParams.value) });
|
|
441
|
-
return extractSwitchLocalePath(switched, router);
|
|
442
|
+
return applyTrailingSlash(extractSwitchLocalePath(switched, router), i18nConfig.trailingSlash);
|
|
442
443
|
},
|
|
443
444
|
switchLocale: async (toLocale) => {
|
|
444
445
|
if (!isValidLocale(toLocale)) {
|
|
@@ -465,7 +466,7 @@ export function createNuxtI18nPluginApi(deps) {
|
|
|
465
466
|
localePath(to, locale) {
|
|
466
467
|
const targetLocale = locale !== void 0 && locale !== "" ? String(locale) : getCurrentLocale();
|
|
467
468
|
const result = i18nStrategy.localeRoute(targetLocale, to, router.currentRoute.value);
|
|
468
|
-
return result.fullPath ?? result.path ?? "";
|
|
469
|
+
return applyTrailingSlash(result.fullPath ?? result.path ?? "", i18nConfig.trailingSlash);
|
|
469
470
|
},
|
|
470
471
|
setI18nRouteParams: (value) => {
|
|
471
472
|
i18nRouteParams.value = value;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { hasProtocol, withTrailingSlash, withoutTrailingSlash } from "ufo";
|
|
2
|
+
export function applyTrailingSlash(to, trailingSlash) {
|
|
3
|
+
if (trailingSlash !== "append" && trailingSlash !== "remove") return to;
|
|
4
|
+
if (hasProtocol(to) && !to.startsWith("http")) return to;
|
|
5
|
+
return (trailingSlash === "append" ? withTrailingSlash : withoutTrailingSlash)(to, true);
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-i18n-micro",
|
|
3
|
-
"version": "3.29.
|
|
3
|
+
"version": "3.29.4",
|
|
4
4
|
"description": "Fast, lightweight i18n for Nuxt with strategy-based routing and minimal overhead.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18n",
|
|
@@ -82,13 +82,13 @@
|
|
|
82
82
|
"sirv": "^2.0.3",
|
|
83
83
|
"ufo": "^1.6.4",
|
|
84
84
|
"unplugin": "^1.16.1 || ^2.0.0 || ^3.3.0",
|
|
85
|
-
"@i18n-micro/
|
|
86
|
-
"@i18n-micro/
|
|
87
|
-
"@i18n-micro/
|
|
88
|
-
"@i18n-micro/
|
|
89
|
-
"@i18n-micro/
|
|
90
|
-
"@i18n-micro/
|
|
91
|
-
"@i18n-micro/
|
|
85
|
+
"@i18n-micro/hmr": "^1.0.15",
|
|
86
|
+
"@i18n-micro/core": "^1.3.18",
|
|
87
|
+
"@i18n-micro/path-strategy": "^1.3.17",
|
|
88
|
+
"@i18n-micro/test-utils": "^1.2.15",
|
|
89
|
+
"@i18n-micro/route-strategy": "^1.1.25",
|
|
90
|
+
"@i18n-micro/types": "^1.2.15",
|
|
91
|
+
"@i18n-micro/utils": "^1.0.23"
|
|
92
92
|
},
|
|
93
93
|
"devDependencies": {
|
|
94
94
|
"@nuxt/devtools": "^3.4.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"652a5b66-66b7-45f2-a0fb-ea5f21477cbe","timestamp":1789144002062,"prerendered":[]}
|