Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More →
Socket
Sign inDemoInstall
Socket

vue-i18n-routing

Package Overview
Dependencies
Maintainers
1
Versions
239
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-i18n-routing - npm Package Compare versions

Comparing version 0.0.0-363434e to 0.0.0-4d9b3bb

6

dist/vue-i18n-routing.cjs.js

@@ -1,1 +0,5 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";const n=function(e,u={}){console.log("install vue-i18n-rouging!")},o="0.0.0";exports.VERSION=o;exports.VueI18nRoutingPlugin=n;
"use strict";var H=Object.defineProperty,Y=Object.defineProperties;var J=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var N=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var X=(e,t,o)=>t in e?H(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,F=(e,t)=>{for(var o in t||(t={}))N.call(t,o)&&X(e,o,t[o]);if(I)for(var o of I(t))C.call(t,o)&&X(e,o,t[o]);return e},S=(e,t)=>Y(e,J(t));var M=(e,t)=>{var o={};for(var u in e)N.call(e,u)&&t.indexOf(u)<0&&(o[u]=e[u]);if(e!=null&&I)for(var u of I(e))t.indexOf(u)<0&&C.call(e,u)&&(o[u]=e[u]);return o};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var i=require("vue-demi"),j=require("vue-router"),K=require("vue-i18n");/*!
* shared v9.2.0-beta.25
* (c) 2021 kazuya kawaguchi
* Released under the MIT License.
*/const q=Object.assign,P=e=>typeof e=="string",Q=e=>typeof e=="symbol",Z=e=>typeof e=="symbol";new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(Z));function T(e){return Boolean(e&&e.__v_isRef===!0)}Promise.resolve();function ee(e){e=e||[];const t=[];for(const o of e)P(o)?t.push({code:o}):t.push(o);return t}function w(e,t){return T(e.locale)&&t==="composition"}function G(e){return"global"in e&&"mode"in e}function y(e){return G(e)?w(e.global,e.mode)?e.global.locale.value:e.global.locale:T(e.locale)?e.locale.value:e.locale}function B(e,t){G(e)?w(e.global,e.mode)?e.global.locale.value=t:e.global.locale=t:T(e.locale)&&(e.locale.value=t)}function oe(e,t,o){return e.replace(/\/+$/,"")+(t?"/":"")||(o?"":"/")}function te(e,{localeCodes:t=[]}={}){if(!w(e.global,e.mode))throw new Error("");const o=i.ref(t);e.global.locales=i.computed(()=>o.value),console.log("... extends i18n done")}const ne={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},O="",W=ne.PREFIX_EXCEPT_DEFAULT,D=!1,V="___",z="default";function U(e,{defaultLocale:t=O,strategy:o=W,trailingSlash:u=D,routesNameSeparator:d=V,defaultLocaleRouteNameSuffix:m=z,includeUprefixedFallback:f=!1,localeCodes:$=[]}={}){if(o==="no_prefix")return e;const _=$.map(n=>P(n)?n:n.code);function h(n,g,E=!1,R=!1){return n.redirect&&(!n.component||!n.file)?[n]:g.reduce((r,s)=>{const{name:c}=n;let{path:a}=n;const l=F({},n);c&&(l.name=`${c}${d}${s}`),n.children&&(l.children=n.children.reduce((b,A)=>[...b,...h(A,[s],!0,R)],[]));const x=s===t;if(x&&o==="prefix_and_default")if(E)E&&R&&c&&(l.name+=`${d}${m}`);else{const b=S(F({},l),{path:a});if(c&&(b.name=`${l.name}${d}${m}`),n.children){b.children=[];for(const A of n.children)b.children=b.children.concat(h(A,[s],!0,!0))}r.push(b)}const p=E&&!a.startsWith("/"),v=!p&&!(x&&o==="prefix_except_default");return v&&(a=`/${s}${a}`),a&&(a=oe(a,u,p)),v&&x&&o==="prefix"&&f&&r.push(F({},n)),l.path=a,r.push(l),r},[])}return e.reduce((n,g)=>[...n,...h(g,_||[])],[])}function ce(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function re(e,t,o){const u=`(${e.join("|")})`,d=`(?:${t}${o})?`,m=new RegExp(`${t}${u}${d}$`,"i"),f=ce(e);return _=>{if(_.name){const n=(P(_.name)?_.name:_.name.toString()).match(m);if(n&&n.length>1)return n[1]}else if(_.path){const h=_.path.match(f);if(h&&h.length>1)return h[1]}return""}}function se({router:e,i18n:t,defaultLocale:o=O,strategy:u=W,trailingSlash:d=D,routesNameSeparator:m=V,defaultLocaleRouteNameSuffix:f=z,localeCodes:$=[]}={}){const _=ee($),h=re(_.map(n=>n.code),m,f);if(te(t,{localeCodes:_}),i.isVue2){const n=e,g=n.constructor,E=n.options.routes||[],R=U(E,{localeCodes:$,defaultLocale:o,strategy:u,trailingSlash:d,routesNameSeparator:m,defaultLocaleRouteNameSuffix:f});console.log("vue2 routes",E,R);const L=new g({mode:"history",base:n.options.base,routes:R});return L.__defaultLocale=o,L.__strategy=u,L.__trailingSlash=d,L.__routesNameSeparator=m,L.__defaultLocaleRouteNameSuffix=f,L.beforeEach((r,s,c)=>{console.log("beforeEach",r,s);const a=y(t),l=h(r)||a||o||"";console.log("currentLocale",a,"finalLocale",l),a!==l&&B(t,l),c()}),L}else{const n=e,g=n.options.routes||[],E=U(g,{localeCodes:$,defaultLocale:o,strategy:u,trailingSlash:d,routesNameSeparator:m,defaultLocaleRouteNameSuffix:f});return console.log("vue3 routes",g,E,n),g.forEach(R=>n.removeRoute(R.name)),E.forEach(R=>n.addRoute(R)),n.__defaultLocale=o,n.__strategy=u,n.__trailingSlash=d,n.__routesNameSeparator=m,n.__defaultLocaleRouteNameSuffix=f,n.beforeEach((R,L,r)=>{console.log("beforeEach",R,L);const s=y(t),c=h(R)||s||o||"";console.log("currentLocale",s,"finalLocale",c),s!==c&&B(t,c),r()}),n}}const ue=()=>{const e=i.getCurrentInstance();if(e==null)throw new Error("should be used in setup");return e.$router},le=()=>{const e=i.getCurrentInstance();if(e==null)throw new Error("should be used in setup");return i.computed(()=>e.$route)};function ae(){return i.isVue2?le():j.useRoute()}function ie(){return i.isVue2?ue():j.useRouter()}function fe(){return K.useI18n()}function de(e={}){const t=fe(),o=ie(),u=ae(),d=e.defaultLocaleRouteNameSuffix||o.__defaultLocaleRouteNameSuffix,m=e.defaultLocale||o.__defaultLocale,f=e.routesNameSeparator||o.__routesNameSeparator,$=e.strategy||o.__strategy;function _(r){const s=r!=null?r:i.isRef(u)?u.value:u;return s.name?k(s.name).split(f)[0]:void 0}function h(r,s){let c=k(r)+($==="no_prefix"?"":f+s);return s===m&&$==="prefix_and_default"&&(c+=f+d),c}function n(r,s){const c=s||y(t);let a=r;P(r)&&(r[0]==="/"?a={path:r}:a={name:r});let l=q({},a);if(l.path&&!l.name){const p=o.resolve(l),v=i.isVue2?p.route:p,b=_(v);P(b)&&(l={name:h(b,c),params:v.params,query:v.query,hash:v.hash})}else{l.name=h(l.name,c);const{params:p}=l;p&&p["0"]===void 0&&p.pathMatch&&(p["0"]=p.pathMatch)}const x=o.resolve(l);return(i.isVue2?x.route.name:x.name)?x:o.resolve(r)}function g(r,s){const c=n(r,s);return c==null?"":i.isVue2?c.route.redirectedFrom||c.route.fullPath:c.redirectedFrom||c.fullPath}function E(r,s){const c=n(r,s);return c==null?void 0:i.isVue2?c.route:c}function R(r,s){const c=n(r,s);return c==null?void 0:i.isVue2?c.location:c.href}function L(r){const s=_();if(!s)return"";const v=i.isVue2&&i.isRef(u)?u.value:u,{params:c}=v,a=M(v,["params"]),l={},x=q({},a,{name:s,params:S(F(F({},c),l),{0:c.pathMatch})}),p=g(x,r);return console.log("switchLocalePath",t.locale.value,r,p),p}return{localePath:g,localeRoute:E,localeLocation:R,switchLocalePath:L}}function k(e){return P(e)?e:Q(e)?e.toString():""}function me({router:e,i18n:t,defaultLocale:o=O,trailingSlash:u=D,routesNameSeparator:d=V,defaultLocaleRouteNameSuffix:m=z,localeCodes:f=[]}={}){if(e==null)throw new Error("TODO");return se({router:e,i18n:t,defaultLocale:o,trailingSlash:u,routesNameSeparator:d,defaultLocaleRouteNameSuffix:m,localeCodes:f})}const _e="";exports.VERSION=_e;exports.extendRouting=me;exports.localizeRoutes=U;exports.useI18nRouting=de;

@@ -1,4 +0,85 @@

import type { Plugin as Plugin_2 } from 'vue-demi';
import type { I18n } from 'vue-i18n';
import { Locale } from 'vue-i18n';
import type { Route as Route_2 } from 'vue-router3';
import type { RouteConfig } from 'vue-router3';
import type { RouteLocationNormalizedLoaded } from 'vue-router';
import type { Router } from 'vue-router';
import VueI18n from 'vue-i18n-legacy';
import VueRouter from 'vue-router3';
/**
* Direction
*/
export declare type Directions = 'ltr' | 'rtl' | 'auto';
export declare function extendRouting<TRouter extends VueRouter | Router>({ router, i18n, defaultLocale, trailingSlash, routesNameSeparator, defaultLocaleRouteNameSuffix, localeCodes }?: VueI18nRoutingOptions): TRouter;
export declare type I18nRoutingOptions = Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'defaultLocaleRouteNameSuffix' | 'trailingSlash' | 'localeCodes'> & {
routesNameSeparator?: string;
};
export declare interface I18nRoutingReturn {
getRouteBaseName(givenRoute?: Route_2 | RouteLocationNormalizedLoaded): string;
localePath(route: any, locale?: Locale): string;
localeRoute(route: any, locale?: Locale): any;
localeLocation(route: any, locale?: Locale): any;
switchLocalePath(locale: Locale): void;
}
/**
* Locale object
*/
export declare interface LocaleObject extends Record<string, any> {
code: Locale;
name?: string;
dir?: Directions;
domain?: string;
file?: string;
isCatchallLocale?: boolean;
iso?: string;
}
export declare function localizeRoutes(routes: VueI18nRoute[], { defaultLocale, strategy, trailingSlash, routesNameSeparator, defaultLocaleRouteNameSuffix, includeUprefixedFallback, localeCodes }?: Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'localeCodes' | 'routesNameSeparator' | 'trailingSlash' | 'defaultLocaleRouteNameSuffix'> & {
includeUprefixedFallback?: boolean;
}): VueI18nRoute[];
/**
* Route config for vue-router v4
*/
export declare interface Route {
name?: string;
path: string;
file?: string;
children?: Route[];
}
declare type _Route = UnionToIntersection<RouteConfig>;
/**
* Route config for lagacy vue-router v3
*/
export declare interface RouteLegacy extends Pick<_Route, Exclude<keyof _Route, 'children' | 'component'>> {
chunkName?: string;
chunkNames?: Record<string, string>;
component?: _Route['component'] | string;
children?: RouteLegacy[];
}
declare const STRATEGIES: {
readonly PREFIX: "prefix";
readonly PREFIX_EXCEPT_DEFAULT: "prefix_except_default";
readonly PREFIX_AND_DEFAULT: "prefix_and_default";
readonly NO_PREFIX: "no_prefix";
};
/**
* Routing strategy
*/
export declare type Strategies = typeof STRATEGIES[keyof typeof STRATEGIES];
declare type UnionToIntersection<T> = (T extends any ? (k: T) => void : never) extends (k: infer U) => void ? U : never;
export declare function useI18nRouting<Legacy extends boolean = false>(options?: I18nRoutingOptions): I18nRoutingReturn;
/**
* Vue I18n Routing Version

@@ -9,10 +90,38 @@ *

*/
export declare const VERSION: string;
export declare const VERSION = "";
/**
* Route config for vue-i18n-routing
*/
export declare type VueI18nRoute = Route & RouteLegacy & {
redirect?: string;
};
/**
* Vue I18n routing options
*/
export declare interface VueI18nRoutingOptions {
routes: [];
/**
* Vue Router instance
*/
router?: VueRouter | Router;
/**
* Vue I18n instance
*/
i18n?: VueI18n | I18n;
defaultLocale?: string;
localeCodes?: string[] | LocaleObject[];
strategy?: Strategies;
trailingSlash?: boolean;
routesNameSeparator?: string;
defaultLocaleRouteNameSuffix?: string;
}
export declare const VueI18nRoutingPlugin: Plugin_2;
export { }
import type { ComputedRef } from 'vue'
export { }
declare module 'vue-i18n' {
export interface ComposerCustom {
locales: ComputedRef<string[] | LocaleObject[]>
}
}

@@ -1,5 +0,415 @@

const VueI18nRoutingPlugin = function(VueOrApp, options = {}) {
console.log("install vue-i18n-rouging!");
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
const VERSION = "0.0.0";
export { VERSION, VueI18nRoutingPlugin };
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
import { ref, computed, isVue2, getCurrentInstance, isRef as isRef$1 } from "vue-demi";
import { useRouter as useRouter$1, useRoute as useRoute$1 } from "vue-router";
import { useI18n as useI18n$1 } from "vue-i18n";
/*!
* shared v9.2.0-beta.25
* (c) 2021 kazuya kawaguchi
* Released under the MIT License.
*/
const assign = Object.assign;
const isString = (val) => typeof val === "string";
const isSymbol$1 = (val) => typeof val === "symbol";
const isSymbol = (val) => typeof val === "symbol";
new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));
function isRef(r) {
return Boolean(r && r.__v_isRef === true);
}
Promise.resolve();
function getNormalizedLocales(locales) {
locales = locales || [];
const normalized = [];
for (const locale of locales) {
if (isString(locale)) {
normalized.push({ code: locale });
} else {
normalized.push(locale);
}
}
return normalized;
}
function isComposer(target, mode) {
return isRef(target.locale) && mode === "composition";
}
function isI18nInstance(i18n) {
return "global" in i18n && "mode" in i18n;
}
function getLocale(i18n) {
return isI18nInstance(i18n) ? isComposer(i18n.global, i18n.mode) ? i18n.global.locale.value : i18n.global.locale : isRef(i18n.locale) ? i18n.locale.value : i18n.locale;
}
function setLocale(i18n, locale) {
if (isI18nInstance(i18n)) {
if (isComposer(i18n.global, i18n.mode)) {
i18n.global.locale.value = locale;
} else {
i18n.global.locale = locale;
}
} else if (isRef(i18n.locale)) {
i18n.locale.value = locale;
}
}
function adjustRoutePathForTrailingSlash(pagePath, trailingSlash, isChildWithRelativePath) {
return pagePath.replace(/\/+$/, "") + (trailingSlash ? "/" : "") || (isChildWithRelativePath ? "" : "/");
}
function extendI18n(i18n, { localeCodes = [] } = {}) {
if (!isComposer(i18n.global, i18n.mode)) {
throw new Error("");
}
const _localeCodes = ref(localeCodes);
i18n.global.locales = computed(() => _localeCodes.value);
console.log("... extends i18n done");
}
const STRATEGIES = {
PREFIX: "prefix",
PREFIX_EXCEPT_DEFAULT: "prefix_except_default",
PREFIX_AND_DEFAULT: "prefix_and_default",
NO_PREFIX: "no_prefix"
};
const DEFAULT_LOCALE = "";
const DEFAULT_STRATEGY = STRATEGIES.PREFIX_EXCEPT_DEFAULT;
const DEFAULT_TRAILING_SLASH = false;
const DEFAULT_ROUTES_NAME_SEPARATOR = "___";
const DEFAULT_LOCALE_ROUTE_NAME_SUFFIX = "default";
function localizeRoutes(routes, {
defaultLocale = DEFAULT_LOCALE,
strategy = DEFAULT_STRATEGY,
trailingSlash = DEFAULT_TRAILING_SLASH,
routesNameSeparator = DEFAULT_ROUTES_NAME_SEPARATOR,
defaultLocaleRouteNameSuffix = DEFAULT_LOCALE_ROUTE_NAME_SUFFIX,
includeUprefixedFallback = false,
localeCodes = []
} = {}) {
if (strategy === "no_prefix") {
return routes;
}
const _localeCodes = localeCodes.map((locale) => isString(locale) ? locale : locale.code);
function makeLocalizedRoutes(route, allowedLocaleCodes, isChild = false, isExtraPageTree = false) {
if (route.redirect && (!route.component || !route.file)) {
return [route];
}
const targetLocales = allowedLocaleCodes;
return targetLocales.reduce((_routes, locale) => {
const { name } = route;
let { path } = route;
const localizedRoute = __spreadValues({}, route);
if (name) {
localizedRoute.name = `${name}${routesNameSeparator}${locale}`;
}
if (route.children) {
localizedRoute.children = route.children.reduce((children, child) => [...children, ...makeLocalizedRoutes(child, [locale], true, isExtraPageTree)], []);
}
const isDefaultLocale = locale === defaultLocale;
if (isDefaultLocale && strategy === "prefix_and_default") {
if (!isChild) {
const defaultRoute = __spreadProps(__spreadValues({}, localizedRoute), { path });
if (name) {
defaultRoute.name = `${localizedRoute.name}${routesNameSeparator}${defaultLocaleRouteNameSuffix}`;
}
if (route.children) {
defaultRoute.children = [];
for (const childRoute of route.children) {
defaultRoute.children = defaultRoute.children.concat(makeLocalizedRoutes(childRoute, [locale], true, true));
}
}
_routes.push(defaultRoute);
} else if (isChild && isExtraPageTree && name) {
localizedRoute.name += `${routesNameSeparator}${defaultLocaleRouteNameSuffix}`;
}
}
const isChildWithRelativePath = isChild && !path.startsWith("/");
const shouldAddPrefix = !isChildWithRelativePath && !(isDefaultLocale && strategy === "prefix_except_default");
if (shouldAddPrefix) {
path = `/${locale}${path}`;
}
if (path) {
path = adjustRoutePathForTrailingSlash(path, trailingSlash, isChildWithRelativePath);
}
if (shouldAddPrefix && isDefaultLocale && strategy === "prefix" && includeUprefixedFallback) {
_routes.push(__spreadValues({}, route));
}
localizedRoute.path = path;
_routes.push(localizedRoute);
return _routes;
}, []);
}
return routes.reduce((localized, route) => [...localized, ...makeLocalizedRoutes(route, _localeCodes || [])], []);
}
function getLocalesRegex(localeCodes) {
return new RegExp(`^/(${localeCodes.join("|")})(?:/|$)`, "i");
}
function createLocaleFromRouteGetter(localeCodes, routesNameSeparator, defaultLocaleRouteNameSuffix) {
const localesPattern = `(${localeCodes.join("|")})`;
const defaultSuffixPattern = `(?:${routesNameSeparator}${defaultLocaleRouteNameSuffix})?`;
const regexpName = new RegExp(`${routesNameSeparator}${localesPattern}${defaultSuffixPattern}$`, "i");
const regexpPath = getLocalesRegex(localeCodes);
const getLocaleFromRoute = (route) => {
if (route.name) {
const name = isString(route.name) ? route.name : route.name.toString();
const matches = name.match(regexpName);
if (matches && matches.length > 1) {
return matches[1];
}
} else if (route.path) {
const matches = route.path.match(regexpPath);
if (matches && matches.length > 1) {
return matches[1];
}
}
return "";
};
return getLocaleFromRoute;
}
function extendRouter({
router,
i18n,
defaultLocale = DEFAULT_LOCALE,
strategy = DEFAULT_STRATEGY,
trailingSlash = DEFAULT_TRAILING_SLASH,
routesNameSeparator = DEFAULT_ROUTES_NAME_SEPARATOR,
defaultLocaleRouteNameSuffix = DEFAULT_LOCALE_ROUTE_NAME_SUFFIX,
localeCodes = []
} = {}) {
const normalizedLocaleCodes = getNormalizedLocales(localeCodes);
const getLocaleFromRoute = createLocaleFromRouteGetter(normalizedLocaleCodes.map((l) => l.code), routesNameSeparator, defaultLocaleRouteNameSuffix);
extendI18n(i18n, { localeCodes: normalizedLocaleCodes });
if (isVue2) {
const _router = router;
const _VueRouter = _router.constructor;
const routes = _router.options.routes || [];
const localizedRoutes = localizeRoutes(routes, {
localeCodes,
defaultLocale,
strategy,
trailingSlash,
routesNameSeparator,
defaultLocaleRouteNameSuffix
});
console.log("vue2 routes", routes, localizedRoutes);
const newRouter = new _VueRouter({
mode: "history",
base: _router.options.base,
routes: localizedRoutes
});
newRouter.__defaultLocale = defaultLocale;
newRouter.__strategy = strategy;
newRouter.__trailingSlash = trailingSlash;
newRouter.__routesNameSeparator = routesNameSeparator;
newRouter.__defaultLocaleRouteNameSuffix = defaultLocaleRouteNameSuffix;
newRouter.beforeEach((to, from, next) => {
console.log("beforeEach", to, from);
const currentLocale = getLocale(i18n);
const finalLocale = getLocaleFromRoute(to) || currentLocale || defaultLocale || "";
console.log("currentLocale", currentLocale, "finalLocale", finalLocale);
if (currentLocale !== finalLocale) {
setLocale(i18n, finalLocale);
}
next();
});
return newRouter;
} else {
const _router = router;
const routes = _router.options.routes || [];
const localizedRoutes = localizeRoutes(routes, {
localeCodes,
defaultLocale,
strategy,
trailingSlash,
routesNameSeparator,
defaultLocaleRouteNameSuffix
});
console.log("vue3 routes", routes, localizedRoutes, _router);
routes.forEach((r) => _router.removeRoute(r.name));
localizedRoutes.forEach((route) => _router.addRoute(route));
_router.__defaultLocale = defaultLocale;
_router.__strategy = strategy;
_router.__trailingSlash = trailingSlash;
_router.__routesNameSeparator = routesNameSeparator;
_router.__defaultLocaleRouteNameSuffix = defaultLocaleRouteNameSuffix;
_router.beforeEach((to, from, next) => {
console.log("beforeEach", to, from);
const currentLocale = getLocale(i18n);
const finalLocale = getLocaleFromRoute(to) || currentLocale || defaultLocale || "";
console.log("currentLocale", currentLocale, "finalLocale", finalLocale);
if (currentLocale !== finalLocale) {
setLocale(i18n, finalLocale);
}
next();
});
return _router;
}
}
const useLegacyRouter = () => {
const vm = getCurrentInstance();
if (vm == null) {
throw new Error(`should be used in setup`);
}
return vm.$router;
};
const useLegacyRoute = () => {
const vm = getCurrentInstance();
if (vm == null) {
throw new Error(`should be used in setup`);
}
return computed(() => vm.$route);
};
function useRoute() {
return isVue2 ? useLegacyRoute() : useRoute$1();
}
function useRouter() {
return isVue2 ? useLegacyRouter() : useRouter$1();
}
function useI18n() {
return useI18n$1();
}
function useI18nRouting(options = {}) {
const $i18n = useI18n();
const $router = useRouter();
const $route = useRoute();
const defaultLocaleRouteNameSuffix = options.defaultLocaleRouteNameSuffix || $router.__defaultLocaleRouteNameSuffix;
const defaultLocale = options.defaultLocale || $router.__defaultLocale;
const routesNameSeparator = options.routesNameSeparator || $router.__routesNameSeparator;
const strategy = options.strategy || $router.__strategy;
function getRouteBaseName(givenRoute) {
const route = givenRoute != null ? givenRoute : isRef$1($route) ? $route.value : $route;
if (!route.name) {
return;
}
const name = getRouteName(route.name);
return name.split(routesNameSeparator)[0];
}
function getLocaleRouteName(routeName, locale) {
let name = getRouteName(routeName) + (strategy === "no_prefix" ? "" : routesNameSeparator + locale);
if (locale === defaultLocale && strategy === "prefix_and_default") {
name += routesNameSeparator + defaultLocaleRouteNameSuffix;
}
return name;
}
function resolveRoute(route, locale) {
const _locale = locale || getLocale($i18n);
let _route = route;
if (isString(route)) {
if (route[0] === "/") {
_route = { path: route };
} else {
_route = { name: route };
}
}
let localizedRoute = assign({}, _route);
if (localizedRoute.path && !localizedRoute.name) {
const _resolvedRoute = $router.resolve(localizedRoute);
const resolvedRoute2 = !isVue2 ? _resolvedRoute : _resolvedRoute.route;
const resolvedRouteName = getRouteBaseName(resolvedRoute2);
if (isString(resolvedRouteName)) {
localizedRoute = {
name: getLocaleRouteName(resolvedRouteName, _locale),
params: resolvedRoute2.params,
query: resolvedRoute2.query,
hash: resolvedRoute2.hash
};
}
} else {
localizedRoute.name = getLocaleRouteName(localizedRoute.name, _locale);
const { params } = localizedRoute;
if (params && params["0"] === void 0 && params.pathMatch) {
params["0"] = params.pathMatch;
}
}
const resolvedRoute = $router.resolve(localizedRoute);
if (isVue2 ? resolvedRoute.route.name : resolvedRoute.name) {
return resolvedRoute;
}
return $router.resolve(route);
}
function localePath(route, locale) {
const localizedRoute = resolveRoute(route, locale);
return localizedRoute == null ? "" : isVue2 ? localizedRoute.route.redirectedFrom || localizedRoute.route.fullPath : localizedRoute.redirectedFrom || localizedRoute.fullPath;
}
function localeRoute(route, locale) {
const resolved = resolveRoute(route, locale);
return resolved == null ? void 0 : isVue2 ? resolved.route : resolved;
}
function localeLocation(route, locale) {
const resolved = resolveRoute(route, locale);
return resolved == null ? void 0 : isVue2 ? resolved.location : resolved.href;
}
function switchLocalePath(locale) {
const name = getRouteBaseName();
if (!name) {
return "";
}
const _a = isVue2 && isRef$1($route) ? $route.value : $route, { params } = _a, routeCopy = __objRest(_a, ["params"]);
const langSwitchParams = {};
const baseRoute = assign({}, routeCopy, {
name,
params: __spreadProps(__spreadValues(__spreadValues({}, params), langSwitchParams), {
0: params.pathMatch
})
});
const path = localePath(baseRoute, locale);
console.log("switchLocalePath", $i18n.locale.value, locale, path);
return path;
}
return {
localePath,
localeRoute,
localeLocation,
switchLocalePath
};
}
function getRouteName(routeName) {
return isString(routeName) ? routeName : isSymbol$1(routeName) ? routeName.toString() : "";
}
function extendRouting({
router,
i18n,
defaultLocale = DEFAULT_LOCALE,
trailingSlash = DEFAULT_TRAILING_SLASH,
routesNameSeparator = DEFAULT_ROUTES_NAME_SEPARATOR,
defaultLocaleRouteNameSuffix = DEFAULT_LOCALE_ROUTE_NAME_SUFFIX,
localeCodes = []
} = {}) {
if (router == null) {
throw new Error("TODO");
}
return extendRouter({
router,
i18n,
defaultLocale,
trailingSlash,
routesNameSeparator,
defaultLocaleRouteNameSuffix,
localeCodes
});
}
const VERSION = "";
export { VERSION, extendRouting, localizeRoutes, useI18nRouting };

@@ -1,1 +0,5 @@

(()=>{var t=function(n){"use strict";const u=function(o,e={}){console.log("install vue-i18n-rouging!")},i="0.0.0";return n.VERSION=i,n.VueI18nRoutingPlugin=u,Object.defineProperty(n,"__esModule",{value:!0}),n[Symbol.toStringTag]="Module",n}({});})();
var _e=Object.defineProperty,he=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var Y=(a,n,f)=>n in a?_e(a,n,{enumerable:!0,configurable:!0,writable:!0,value:f}):a[n]=f,w=(a,n)=>{for(var f in n||(n={}))k.call(n,f)&&Y(a,f,n[f]);if(x)for(var f of x(n))H.call(n,f)&&Y(a,f,n[f]);return a},M=(a,n)=>he(a,Re(n));var J=(a,n)=>{var f={};for(var $ in a)k.call(a,$)&&n.indexOf($)<0&&(f[$]=a[$]);if(a!=null&&x)for(var $ of x(a))n.indexOf($)<0&&H.call(a,$)&&(f[$]=a[$]);return f};var VueI18nRouting=function(a,n,f,$){"use strict";/*!
* shared v9.2.0-beta.25
* (c) 2021 kazuya kawaguchi
* Released under the MIT License.
*/const j=Object.assign,T=e=>typeof e=="string",K=e=>typeof e=="symbol",Q=e=>typeof e=="symbol";new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(Q));function y(e){return Boolean(e&&e.__v_isRef===!0)}Promise.resolve();function Z(e){e=e||[];const r=[];for(const c of e)T(c)?r.push({code:c}):r.push(c);return r}function V(e,r){return y(e.locale)&&r==="composition"}function G(e){return"global"in e&&"mode"in e}function v(e){return G(e)?V(e.global,e.mode)?e.global.locale.value:e.global.locale:y(e.locale)?e.locale.value:e.locale}function q(e,r){G(e)?V(e.global,e.mode)?e.global.locale.value=r:e.global.locale=r:y(e.locale)&&(e.locale.value=r)}function D(e,r,c){return e.replace(/\/+$/,"")+(r?"/":"")||(c?"":"/")}function ee(e,{localeCodes:r=[]}={}){if(!V(e.global,e.mode))throw new Error("");const c=n.ref(r);e.global.locales=n.computed(()=>c.value),console.log("... extends i18n done")}const oe={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},O="",B=oe.PREFIX_EXCEPT_DEFAULT,z=!1,U="___",N="default";function C(e,{defaultLocale:r=O,strategy:c=B,trailingSlash:d=z,routesNameSeparator:h=U,defaultLocaleRouteNameSuffix:R=N,includeUprefixedFallback:_=!1,localeCodes:A=[]}={}){if(c==="no_prefix")return e;const m=A.map(o=>T(o)?o:o.code);function g(o,E,F=!1,p=!1){return o.redirect&&(!o.component||!o.file)?[o]:E.reduce((s,l)=>{const{name:t}=o;let{path:i}=o;const u=w({},o);t&&(u.name=`${t}${h}${l}`),o.children&&(u.children=o.children.reduce((P,X)=>[...P,...g(X,[l],!0,p)],[]));const S=l===r;if(S&&c==="prefix_and_default")if(F)F&&p&&t&&(u.name+=`${h}${R}`);else{const P=M(w({},u),{path:i});if(t&&(P.name=`${u.name}${h}${R}`),o.children){P.children=[];for(const X of o.children)P.children=P.children.concat(g(X,[l],!0,!0))}s.push(P)}const L=F&&!i.startsWith("/"),I=!L&&!(S&&c==="prefix_except_default");return I&&(i=`/${l}${i}`),i&&(i=D(i,d,L)),I&&S&&c==="prefix"&&_&&s.push(w({},o)),u.path=i,s.push(u),s},[])}return e.reduce((o,E)=>[...o,...g(E,m||[])],[])}function te(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function ne(e,r,c){const d=`(${e.join("|")})`,h=`(?:${r}${c})?`,R=new RegExp(`${r}${d}${h}$`,"i"),_=te(e);return m=>{if(m.name){const o=(T(m.name)?m.name:m.name.toString()).match(R);if(o&&o.length>1)return o[1]}else if(m.path){const g=m.path.match(_);if(g&&g.length>1)return g[1]}return""}}function ce({router:e,i18n:r,defaultLocale:c=O,strategy:d=B,trailingSlash:h=z,routesNameSeparator:R=U,defaultLocaleRouteNameSuffix:_=N,localeCodes:A=[]}={}){const m=Z(A),g=ne(m.map(o=>o.code),R,_);if(ee(r,{localeCodes:m}),n.isVue2){const o=e,E=o.constructor,F=o.options.routes||[],p=C(F,{localeCodes:A,defaultLocale:c,strategy:d,trailingSlash:h,routesNameSeparator:R,defaultLocaleRouteNameSuffix:_});console.log("vue2 routes",F,p);const b=new E({mode:"history",base:o.options.base,routes:p});return b.__defaultLocale=c,b.__strategy=d,b.__trailingSlash=h,b.__routesNameSeparator=R,b.__defaultLocaleRouteNameSuffix=_,b.beforeEach((s,l,t)=>{console.log("beforeEach",s,l);const i=v(r),u=g(s)||i||c||"";console.log("currentLocale",i,"finalLocale",u),i!==u&&q(r,u),t()}),b}else{const o=e,E=o.options.routes||[],F=C(E,{localeCodes:A,defaultLocale:c,strategy:d,trailingSlash:h,routesNameSeparator:R,defaultLocaleRouteNameSuffix:_});return console.log("vue3 routes",E,F,o),E.forEach(p=>o.removeRoute(p.name)),F.forEach(p=>o.addRoute(p)),o.__defaultLocale=c,o.__strategy=d,o.__trailingSlash=h,o.__routesNameSeparator=R,o.__defaultLocaleRouteNameSuffix=_,o.beforeEach((p,b,s)=>{console.log("beforeEach",p,b);const l=v(r),t=g(p)||l||c||"";console.log("currentLocale",l,"finalLocale",t),l!==t&&q(r,t),s()}),o}}const se=()=>{const e=n.getCurrentInstance();if(e==null)throw new Error("should be used in setup");return e.$router},re=()=>{const e=n.getCurrentInstance();if(e==null)throw new Error("should be used in setup");return n.computed(()=>e.$route)};function le(){return n.isVue2?re():f.useRoute()}function ae(){return n.isVue2?se():f.useRouter()}function ue(){return $.useI18n()}function ie(e={}){const r=ue(),c=ae(),d=le(),h=e.defaultLocaleRouteNameSuffix||c.__defaultLocaleRouteNameSuffix,R=e.defaultLocale||c.__defaultLocale,_=e.routesNameSeparator||c.__routesNameSeparator,A=e.strategy||c.__strategy;function m(s){const l=s!=null?s:n.isRef(d)?d.value:d;return l.name?W(l.name).split(_)[0]:void 0}function g(s,l){let t=W(s)+(A==="no_prefix"?"":_+l);return l===R&&A==="prefix_and_default"&&(t+=_+h),t}function o(s,l){const t=l||v(r);let i=s;T(s)&&(s[0]==="/"?i={path:s}:i={name:s});let u=j({},i);if(u.path&&!u.name){const L=c.resolve(u),I=n.isVue2?L.route:L,P=m(I);T(P)&&(u={name:g(P,t),params:I.params,query:I.query,hash:I.hash})}else{u.name=g(u.name,t);const{params:L}=u;L&&L["0"]===void 0&&L.pathMatch&&(L["0"]=L.pathMatch)}const S=c.resolve(u);return(n.isVue2?S.route.name:S.name)?S:c.resolve(s)}function E(s,l){const t=o(s,l);return t==null?"":n.isVue2?t.route.redirectedFrom||t.route.fullPath:t.redirectedFrom||t.fullPath}function F(s,l){const t=o(s,l);return t==null?void 0:n.isVue2?t.route:t}function p(s,l){const t=o(s,l);return t==null?void 0:n.isVue2?t.location:t.href}function b(s){const l=m();if(!l)return"";const I=n.isVue2&&n.isRef(d)?d.value:d,{params:t}=I,i=J(I,["params"]),u={},S=j({},i,{name:l,params:M(w(w({},t),u),{0:t.pathMatch})}),L=E(S,s);return console.log("switchLocalePath",r.locale.value,s,L),L}return{localePath:E,localeRoute:F,localeLocation:p,switchLocalePath:b}}function W(e){return T(e)?e:K(e)?e.toString():""}function fe({router:e,i18n:r,defaultLocale:c=O,trailingSlash:d=z,routesNameSeparator:h=U,defaultLocaleRouteNameSuffix:R=N,localeCodes:_=[]}={}){if(e==null)throw new Error("TODO");return ce({router:e,i18n:r,defaultLocale:c,trailingSlash:d,routesNameSeparator:h,defaultLocaleRouteNameSuffix:R,localeCodes:_})}const de="";return a.VERSION=de,a.extendRouting=fe,a.localizeRoutes=C,a.useI18nRouting=ie,Object.defineProperty(a,"__esModule",{value:!0}),a[Symbol.toStringTag]="Module",a}({},VueDemi,VueRouter,VueI18n);

25

package.json
{
"name": "vue-i18n-routing",
"description": "The i18n routing with using vue-i18n",
"version": "0.0.0-363434e",
"version": "0.0.0-4d9b3bb",
"dependencies": {
"@intlify/shared": "beta",
"vue-demi": "*"
},
"devDependencies": {
"vite": "^2.6.4",
"@microsoft/api-extractor": "^7.18.20",
"api-docs-gen": "^0.4.0",
"rimraf": "^3.0.2",
"vite": "^2.7.4",
"vite-plugin-dts": "^0.9.6",
"vue": "^3.2.23",
"vue-i18n": "npm:vue-i18n@next",
"vue-i18n-bridge": "beta",
"vue-i18n-legacy": "npm:vue-i18n@latest",
"vue-router": "^4.0.12",
"vue2": "npm:vue@2",
"vue-router3": "npm:vue-router@latest",
"rimraf": "^3.0.2",
"@microsoft/api-extractor": "^7.18.20"
"vue2": "npm:vue@2"
},
"peerDependencies": {
"@vue/composition-api": "^1.4.0",
"vue": "^2.6.14 || ^3.2.0",
"vue-router": "^3.5.3 || ^4.0.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
},
"keywords": [

@@ -71,4 +82,6 @@ "i18n",

"dev": "vite",
"build": "vite build"
"build": "vite build",
"typecheck": "tsc -p . --noEmit",
"build:docs": "api-docs-gen ./temp/vue-i18n-routing.api.json -c ./docsgen.config.js -o ./ -g noprefix"
}
}

@@ -7,4 +7,8 @@ # vue-i18n-routing

## 🤝 API
About details, See the [API References]('./api.md)
## Šī¸ License
[MIT](http://opensource.org/licenses/MIT)
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡ī¸ by Socket Inc