nuxt-i18n
Advanced tools
Comparing version 5.8.3 to 5.8.4
@@ -5,2 +5,12 @@ # Change Log | ||
<a name="5.8.4"></a> | ||
## [5.8.4](https://github.com/nuxt-community/nuxt-i18n/compare/v5.8.3...v5.8.4) (2019-02-22) | ||
### Bug Fixes | ||
* Prevent duplicated route names issue with prefix_and_default strategy ([318850c](https://github.com/nuxt-community/nuxt-i18n/commit/318850c)), closes [#140](https://github.com/nuxt-community/nuxt-i18n/issues/140) | ||
<a name="5.8.3"></a> | ||
@@ -7,0 +17,0 @@ ## [5.8.3](https://github.com/nuxt-community/nuxt-i18n/compare/v5.8.2...v5.8.3) (2019-02-17) |
{ | ||
"name": "nuxt-i18n", | ||
"version": "5.8.3", | ||
"version": "5.8.4", | ||
"description": "i18n for Nuxt", | ||
@@ -55,3 +55,3 @@ "license": "MIT", | ||
"codecov": "3.2.0", | ||
"eslint": "5.14.0", | ||
"eslint": "5.14.1", | ||
"eslint-config-standard": "12.0.0", | ||
@@ -63,3 +63,3 @@ "eslint-plugin-import": "2.16.0", | ||
"eslint-plugin-standard": "4.0.0", | ||
"eslint-plugin-vue": "5.2.1", | ||
"eslint-plugin-vue": "5.2.2", | ||
"jest": "24.1.0", | ||
@@ -69,5 +69,5 @@ "jsdom": "13.2.0", | ||
"standard-version": "5.0.0", | ||
"typescript": "3.3.3", | ||
"vuepress": "0.14.8" | ||
"typescript": "3.3.3333", | ||
"vuepress": "0.14.9" | ||
} | ||
} |
@@ -30,2 +30,3 @@ const packageJson = require('../../package.json') | ||
routesNameSeparator: '___', | ||
defaultLocaleRouteNameSuffix: 'default', | ||
strategy: STRATEGIES.PREFIX_EXCEPT_DEFAULT, | ||
@@ -32,0 +33,0 @@ lazy: false, |
@@ -11,2 +11,3 @@ const { | ||
routesNameSeparator, | ||
defaultLocaleRouteNameSuffix, | ||
strategy, | ||
@@ -96,3 +97,4 @@ parsePages, | ||
if (locale === defaultLocale && strategy === STRATEGIES.PREFIX_AND_DEFAULT) { | ||
routes.push({ ...localizedRoute, path }) | ||
const nameDefault = localizedRoute.name + routesNameSeparator + defaultLocaleRouteNameSuffix | ||
routes.push({ ...localizedRoute, path, name: nameDefault }) | ||
} | ||
@@ -99,0 +101,0 @@ |
@@ -69,11 +69,13 @@ /* global app, req, vuex, store */ | ||
* @param {String} routesNameSeparator Separator used to add locale suffixes in routes names | ||
* @param {String} defaultLocaleRouteNameSuffix Suffix added to default locale routes names | ||
* @param {Array} locales Locales list from nuxt config | ||
* @return {String} Locale code found if any | ||
*/ | ||
exports.getLocaleFromRoute = (route = {}, routesNameSeparator = '', locales = []) => { | ||
exports.getLocaleFromRoute = (route = {}, routesNameSeparator = '', defaultLocaleRouteNameSuffix = '', locales = []) => { | ||
const codes = getLocaleCodes(locales) | ||
const localesPattern = `(${codes.join('|')})` | ||
const defaultSuffixPattern = `(?:${routesNameSeparator}${defaultLocaleRouteNameSuffix})?` | ||
// Extract from route name | ||
if (route.name) { | ||
const regexp = new RegExp(`${routesNameSeparator}${localesPattern}$`, 'i') | ||
const regexp = new RegExp(`${routesNameSeparator}${localesPattern}${defaultSuffixPattern}$`, 'i') | ||
const matches = route.name.match(regexp) | ||
@@ -80,0 +82,0 @@ if (matches && matches.length > 1) { |
@@ -57,3 +57,2 @@ import Vue from 'vue' | ||
app.i18n.forwardedHost = <%= options.forwardedHost %> | ||
app.i18n.routesNameSeparator = '<%= options.routesNameSeparator %>' | ||
app.i18n.beforeLanguageSwitch = <%= options.beforeLanguageSwitch %> | ||
@@ -81,3 +80,6 @@ app.i18n.onLanguageSwitched = <%= options.onLanguageSwitched %> | ||
} else { | ||
const routeLocale = getLocaleFromRoute(route, app.i18n.routesNameSeparator, app.i18n.locales) | ||
const routesNameSeparator = '<%= options.routesNameSeparator %>' | ||
const defaultLocaleRouteNameSuffix = '<%= options.defaultLocaleRouteNameSuffix %>' | ||
const routeLocale = getLocaleFromRoute(route, routesNameSeparator, defaultLocaleRouteNameSuffix, app.i18n.locales) | ||
locale = routeLocale ? routeLocale : locale | ||
@@ -84,0 +86,0 @@ } |
import './middleware'; | ||
import Vue from 'vue' | ||
const routesNameSeparator = '<%= options.routesNameSeparator %>' | ||
function localePathFactory (i18nPath, routerPath) { | ||
const STRATEGIES = <%= JSON.stringify(options.STRATEGIES) %> | ||
const STRATEGY = '<%= options.strategy %>' | ||
const defaultLocale = '<%= options.defaultLocale %>' | ||
const defaultLocaleRouteNameSuffix = '<%= options.defaultLocaleRouteNameSuffix %>' | ||
return function localePath (route, locale) { | ||
@@ -18,4 +24,9 @@ // Abort if no route or no locale | ||
// Build localized route options | ||
const routesNameSeparator = '<%= options.routesNameSeparator %>' | ||
const name = route.name + routesNameSeparator + locale | ||
let name = route.name + routesNameSeparator + locale | ||
// Match route without prefix for default locale | ||
if (locale === defaultLocale && STRATEGY === STRATEGIES.PREFIX_AND_DEFAULT) { | ||
name += routesNameSeparator + defaultLocaleRouteNameSuffix | ||
} | ||
const localizedRoute = Object.assign({}, route, { name }) | ||
@@ -40,5 +51,6 @@ | ||
function switchLocalePathFactory (i18nPath) { | ||
const LOCALE_DOMAIN_KEY = '<%= options.LOCALE_DOMAIN_KEY %>' | ||
const LOCALE_CODE_KEY = '<%= options.LOCALE_CODE_KEY %>' | ||
return function switchLocalePath (locale) { | ||
const LOCALE_DOMAIN_KEY = '<%= options.LOCALE_DOMAIN_KEY %>' | ||
const LOCALE_CODE_KEY = '<%= options.LOCALE_CODE_KEY %>' | ||
const name = this.getRouteBaseName() | ||
@@ -84,3 +96,2 @@ if (!name) { | ||
return function getRouteBaseName (route) { | ||
const routesNameSeparator = '<%= options.routesNameSeparator %>' | ||
route = routeGetter.call(this, route) | ||
@@ -87,0 +98,0 @@ if (!route.name) { |
@@ -21,2 +21,3 @@ import cookie from 'cookie' | ||
const routesNameSeparator = '<%= options.routesNameSeparator %>' | ||
const defaultLocaleRouteNameSuffix = '<%= options.defaultLocaleRouteNameSuffix %>' | ||
const locales = getLocaleCodes(<%= JSON.stringify(options.locales) %>) | ||
@@ -37,3 +38,3 @@ const syncVuex = <%= options.syncVuex %> | ||
const detectBrowserLanguage = <%= JSON.stringify(options.detectBrowserLanguage) %> | ||
const routeLocale = getLocaleFromRoute(route, routesNameSeparator, locales) | ||
const routeLocale = getLocaleFromRoute(route, routesNameSeparator, defaultLocaleRouteNameSuffix, locales) | ||
@@ -40,0 +41,0 @@ const getCookie = () => { |
52251
935