38 lines
		
	
	
		
			781 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			781 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * Replace i18n texts
 | 
						|
 */
 | 
						|
 | 
						|
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
						|
 | 
						|
export default (lang, locale) => ({
 | 
						|
	enforce: 'pre',
 | 
						|
	test: /\.(tag|js)$/,
 | 
						|
	exclude: /node_modules/,
 | 
						|
	loader: StringReplacePlugin.replace({
 | 
						|
		replacements: [
 | 
						|
			{
 | 
						|
				pattern: /%i18n:(.+?)%/g, replacement: (_, key) => {
 | 
						|
					let text = locale;
 | 
						|
					
 | 
						|
					// Check the key existance
 | 
						|
					const error = key.split('.').some(k => {
 | 
						|
						if (text.hasOwnProperty(k)) {
 | 
						|
							text = text[k];
 | 
						|
							return false;
 | 
						|
						} else {
 | 
						|
							return true;
 | 
						|
						}
 | 
						|
					});
 | 
						|
					
 | 
						|
					if (error) {
 | 
						|
						console.warn(`key '${key}' not found in '${lang}'`);
 | 
						|
						return key; // Fallback
 | 
						|
					} else {
 | 
						|
						return text.replace(/'/g, '\\\'').replace(/"/g, '\\"');
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		]
 | 
						|
	})
 | 
						|
});
 |