nuxt-i18n-micro 1.13.1 → 1.13.3

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.
@@ -9,4 +9,4 @@
9
9
  <link rel="prefetch" as="style" href="/__nuxt-i18n-micro/_nuxt/error-500.21ZDxC33.css">
10
10
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DzdJBprQ.js">
11
11
  <script type="module" src="/__nuxt-i18n-micro/_nuxt/D1fvHJQV.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__">[{"serverRendered":1},false]</script>
12
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"5324e7e7-92a1-4e32-b4c3-4ce4f77f2934",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
12
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"5ea89697-ba72-411f-a61a-8d8be203f3a9",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -9,4 +9,4 @@
9
9
  <link rel="prefetch" as="style" href="/__nuxt-i18n-micro/_nuxt/error-500.21ZDxC33.css">
10
10
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DzdJBprQ.js">
11
11
  <script type="module" src="/__nuxt-i18n-micro/_nuxt/D1fvHJQV.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__">[{"serverRendered":1},false]</script>
12
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"5324e7e7-92a1-4e32-b4c3-4ce4f77f2934",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
12
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"5ea89697-ba72-411f-a61a-8d8be203f3a9",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -1 +1 @@
1
- {"id":"5324e7e7-92a1-4e32-b4c3-4ce4f77f2934","timestamp":1725449582814}
1
+ {"id":"5ea89697-ba72-411f-a61a-8d8be203f3a9","timestamp":1725472070372}
@@ -0,0 +1 @@
1
+ {"id":"5ea89697-ba72-411f-a61a-8d8be203f3a9","timestamp":1725472070372,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -9,4 +9,4 @@
9
9
  <link rel="prefetch" as="style" href="/__nuxt-i18n-micro/_nuxt/error-500.21ZDxC33.css">
10
10
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DzdJBprQ.js">
11
11
  <script type="module" src="/__nuxt-i18n-micro/_nuxt/D1fvHJQV.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__">[{"serverRendered":1},false]</script>
12
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"5324e7e7-92a1-4e32-b4c3-4ce4f77f2934",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
12
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"5ea89697-ba72-411f-a61a-8d8be203f3a9",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": "1.13.1",
4
+ "version": "1.13.3",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "0.8.3",
7
7
  "unbuild": "2.0.0"
@@ -36,7 +36,7 @@ export default _default;
36
36
  export interface PluginsInjections {
37
37
  $getLocale: () => string;
38
38
  $getLocales: () => Locale[];
39
- $getRouteName: (route?: RouteLocationNormalizedLoaded | RouteLocationResolvedGeneric, locale?: string) => string;
39
+ $getRouteName: (route?: RouteLocationRaw, locale?: string) => string;
40
40
  $t: <T extends Record<string, string | number | boolean>>(key: string, params?: T, defaultValue?: string) => string | number | boolean | Translations | PluralTranslations | unknown[] | unknown | null;
41
41
  $tc: (key: string, count: number, defaultValue?: string) => string;
42
42
  $tn: (value: number, options?: Intl.NumberFormatOptions) => string;
@@ -39,8 +39,18 @@ function getLocalizedRoute(to, router, route, i18nConfig, locale) {
39
39
  const currentLocale = locale || getCurrentLocale(route, i18nConfig);
40
40
  const selectRoute = router.resolve(to);
41
41
  const routeName = getRouteName(selectRoute, currentLocale);
42
+ const resolveParams = (to2) => {
43
+ const params = typeof to2 === "object" && "params" in to2 && typeof to2.params === "object" ? { ...to2.params } : {};
44
+ if (typeof to2 === "string") {
45
+ const resolved = router.resolve(to2);
46
+ if (resolved && resolved.params) {
47
+ Object.assign(params, resolved.params);
48
+ }
49
+ }
50
+ return params;
51
+ };
42
52
  if (router.hasRoute(`localized-${routeName}-${currentLocale}`)) {
43
- const newParams2 = { ...route.params };
53
+ const newParams2 = resolveParams(to);
44
54
  newParams2.locale = currentLocale;
45
55
  return router.resolve({
46
56
  params: newParams2,
@@ -48,7 +58,7 @@ function getLocalizedRoute(to, router, route, i18nConfig, locale) {
48
58
  });
49
59
  }
50
60
  const newRouteName = currentLocale !== i18nConfig.defaultLocale || i18nConfig.includeDefaultLocaleRoute ? `localized-${routeName}` : routeName;
51
- const newParams = { ...route.params };
61
+ const newParams = resolveParams(to);
52
62
  delete newParams.locale;
53
63
  if (currentLocale !== i18nConfig.defaultLocale || i18nConfig.includeDefaultLocaleRoute) {
54
64
  newParams.locale = currentLocale;
@@ -2,11 +2,11 @@ declare const _default: import("#app").Plugin<{
2
2
  defineI18nRoute: (routeDefinition: {
3
3
  locales?: string[] | Record<string, Record<string, string>>;
4
4
  localeRoutes?: Record<string, string>;
5
- }) => Promise<void | import("vue-router").NavigationFailure | undefined> | undefined;
5
+ }) => Promise<void>;
6
6
  }> & import("#app").ObjectPlugin<{
7
7
  defineI18nRoute: (routeDefinition: {
8
8
  locales?: string[] | Record<string, Record<string, string>>;
9
9
  localeRoutes?: Record<string, string>;
10
- }) => Promise<void | import("vue-router").NavigationFailure | undefined> | undefined;
10
+ }) => Promise<void>;
11
11
  }>;
12
12
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineNuxtPlugin, useNuxtApp, useRuntimeConfig } from "#app";
1
+ import { defineNuxtPlugin, navigateTo, useNuxtApp, useRuntimeConfig } from "#app";
2
2
  import { useRoute, useRouter } from "#imports";
3
3
  export default defineNuxtPlugin((_nuxtApp) => {
4
4
  const config = useRuntimeConfig();
@@ -16,29 +16,32 @@ export default defineNuxtPlugin((_nuxtApp) => {
16
16
  }
17
17
  return {};
18
18
  };
19
- const defineI18nRoute = (routeDefinition) => {
20
- const currentLocale = (route.params.locale || i18nConfig.defaultLocale).toString();
21
- const normalizedLocales = normalizeLocales(routeDefinition.locales);
22
- const { name } = route;
23
- if (!Object.values(normalizedLocales).length || normalizedLocales[currentLocale]) {
24
- const translation = normalizedLocales[currentLocale];
25
- const nuxtApp = useNuxtApp();
26
- nuxtApp.$mergeTranslations(translation);
27
- } else {
19
+ useRouter().beforeEach(async (to, from, next) => {
20
+ if (i18nConfig.includeDefaultLocaleRoute) {
21
+ const currentLocale = (to.params.locale || i18nConfig.defaultLocale).toString();
22
+ const { name } = to;
28
23
  let defaultRouteName = name?.toString().replace("localized-", "").replace(new RegExp(`-${currentLocale}$`), "");
29
- const resolvedRoute = router.resolve({ name: defaultRouteName });
30
- const newParams = { ...route.params };
31
- delete newParams.locale;
32
- if (i18nConfig.includeDefaultLocaleRoute) {
33
- if (router.hasRoute(`localized-${defaultRouteName}-${currentLocale}`)) {
34
- defaultRouteName = `localized-${defaultRouteName}-${currentLocale}`;
24
+ if (!to.params.locale) {
25
+ if (router.hasRoute(`localized-${to.name?.toString()}-${currentLocale}`)) {
26
+ defaultRouteName = `localized-${to.name?.toString()}-${currentLocale}`;
35
27
  } else {
36
- defaultRouteName = `localized-${defaultRouteName}`;
28
+ defaultRouteName = `localized-${to.name?.toString()}`;
37
29
  }
30
+ const newParams = { ...to.params };
38
31
  newParams.locale = i18nConfig.defaultLocale;
39
32
  newParams.name = defaultRouteName;
33
+ await navigateTo({ name: defaultRouteName, params: newParams }, { redirectCode: 301, external: true });
40
34
  }
41
- return router.push(resolvedRoute);
35
+ }
36
+ next();
37
+ });
38
+ const defineI18nRoute = async (routeDefinition) => {
39
+ const currentLocale = (route.params.locale || i18nConfig.defaultLocale).toString();
40
+ const normalizedLocales = normalizeLocales(routeDefinition.locales);
41
+ if (!Object.values(normalizedLocales).length || normalizedLocales[currentLocale]) {
42
+ const translation = normalizedLocales[currentLocale];
43
+ const nuxtApp = useNuxtApp();
44
+ nuxtApp.$mergeTranslations(translation);
42
45
  }
43
46
  };
44
47
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-i18n-micro",
3
- "version": "1.13.1",
3
+ "version": "1.13.3",
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":"5324e7e7-92a1-4e32-b4c3-4ce4f77f2934","timestamp":1725449582814,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}