40 lines
1015 B
JavaScript
40 lines
1015 B
JavaScript
import
|
|
supportedLanguages,
|
|
{ langTagRegex }
|
|
from '../../utils/supported-languages';
|
|
|
|
const toLowerCase = String.prototype.toLowerCase;
|
|
|
|
export function getLangFromPath(path) {
|
|
const maybeLang = toLowerCase.call(path.split('/')[1]);
|
|
if (supportedLanguages[maybeLang]) {
|
|
return maybeLang;
|
|
}
|
|
return 'en';
|
|
}
|
|
|
|
export function addLang(path, lang, primaryLang) {
|
|
// if maybeLang is supported continue
|
|
// if maybeLang is unsupported lang, remove and use lang
|
|
// if maybeLang is not lang tag, add lang tag.
|
|
// if both primary and lang are not lang tags default en
|
|
const maybeLang = toLowerCase.call(path.split('/')[1]);
|
|
const restUrl = path.split('/').slice(2).join('/');
|
|
|
|
if (supportedLanguages[maybeLang]) {
|
|
return path;
|
|
}
|
|
|
|
if (
|
|
langTagRegex.test(maybeLang) &&
|
|
!supportedLanguages[maybeLang]
|
|
) {
|
|
return `/${primaryLang || lang }/${restUrl}`;
|
|
}
|
|
|
|
if (supportedLanguages[primaryLang || lang]) {
|
|
return `/${primaryLang || lang}${path}`;
|
|
}
|
|
return `/en${path}`;
|
|
}
|