You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			35 lines
		
	
	
		
			825 B
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			825 B
		
	
	
	
		
			JavaScript
		
	
| 
											8 years ago
										 | /* eslint-env node */ | ||
| 
											9 years ago
										 | 
 | ||
| 
											8 years ago
										 | exports.setup = (locale, messages) => { | ||
|  |   if (!locale) { | ||
|  |     throw new Error('i18n: locale parameter is required'); | ||
|  |   } | ||
|  |   if (!messages) { | ||
|  |     throw new Error('i18n: messages parameter is required'); | ||
|  |   } | ||
| 
											9 years ago
										 | 
 | ||
| 
											8 years ago
										 |   function getMessage(key, substitutions) { | ||
|  |     const entry = messages[key]; | ||
|  |     if (!entry) { | ||
|  |       console.error(`i18n: Attempted to get translation for nonexistent key '${key}'`); | ||
|  |       return ''; | ||
|  |     } | ||
| 
											9 years ago
										 | 
 | ||
| 
											8 years ago
										 |     const { message } = entry; | ||
| 
											8 years ago
										 |     if (Array.isArray(substitutions)) { | ||
| 
											8 years ago
										 |       return substitutions.reduce( | ||
|  |         (result, substitution) => result.replace(/\$.+?\$/, substitution), | ||
|  |         message | ||
|  |       ); | ||
|  |     } else if (substitutions) { | ||
|  |       return message.replace(/\$.+?\$/, substitutions); | ||
|  |     } | ||
|  | 
 | ||
|  |     return message; | ||
|  |   } | ||
|  | 
 | ||
|  |   getMessage.getLocale = () => locale; | ||
|  | 
 | ||
|  |   return getMessage; | ||
|  | }; |