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}`; | ||
|  | } |